Skills are archive-backed data tools and computed analytics exposed to AI agents over MCP. Learn what they are, how they differ from direct tools, and how to discover them.
A skill is a named, self-describing data or analytics capability that an AI agent can invoke through the Ithaca MCP server. Skills come in two flavors:
Archive-backed skills read from the Ithaca data archive — a curated, versioned store of market data, fundamentals, congressional trades, insider filings, sentiment, macro indicators, and more. Each result ships with a provenance envelope so the agent (and the human watching the trace) always knows where the data came from and how fresh it is.
Computed analytics skills run trusted numpy/pandas code on archive closes or agent-supplied inputs. They produce derived metrics — volatility, options greeks, correlations, factor exposures, DCF valuations, Monte Carlo paths — without ever executing agent-authored code.
Skills are read-only research tools. They cannot place orders, modify strategies, or touch the money path. Anything that affects capital goes through the approval-gated tools documented in MCP Tools.
Data retrieval + computed analytics over the archive
market.quote, vol.iv_rank, congress.trades
Yes — every result
One of four profiles
Direct tools drive the workflow. Skills feed it with trusted data and derived metrics. An agent typically opens a session with a direct tool, then calls dozens of skills to research a ticker, and finally hands the findings back to a direct tool (propose_strategy) to act.
If a capability exists as a skill, prefer the skill over scraping the web or reasoning from memory. Skills are sourced, fresh, and traceable — agent memory is not.
Every archive-backed skill returns its payload wrapped in a provenance envelope. This is what makes Ithaca data trustworthy inside an agent trace: the human can inspect exactly where each number came from.
Origin of the data — archive-community, ibkr, sec, capitol-trades, quiver, fmp, fred, computed
freshness.as_of
ISO timestamp
When the underlying record was last refreshed
freshness.lag_seconds
int
Wall-clock lag between as_of and the most recent source update
coverage.start / end
ISO timestamp
Time range the result covers
cost.credits
int
Credit cost charged to the tenant for this call
cost.tier
string
free, basic, pro, enterprise
warnings
string[]
Non-fatal caveats — stale data, partial coverage, interpolated values, etc.
Always check warnings before acting on a result. A non-empty array means the data is usable but imperfect — for example, a congressional trade filed 90 days late, or a volatility series computed from fewer than 30 closes.
Parameter sweeps, Monte Carlo, portfolio optimization
portfolio.optimize, montecarlo.simulate
If a skill exceeds its budget it returns a timeout warning in the provenance envelope and a partial result (where possible). The agent can then narrow its request or switch to a longer profile explicitly.
Each descriptor contains skill_id, category, description, runtime_profile, and cost — enough for the agent to pick the right skill and predict its budget without a full call.