Connect the hosted MCP
The hosted policy is: first call free, then pay per call in USDC (x402) — your agent brings its wallet. One successful intelligence-tool invocation is free per observed network origin. Changing session IDs or client metadata does not create another grant; callers sharing one outbound address also share the courtesy call.otto_catalog is always free, does not consume it, and returns the full live x402 menu.
Claude Code
Claude Desktop
Customize → Connectors → + → Add custom connector → pastehttps://mcp.ottoai.services.
Cursor
Add it to~/.cursor/mcp.json (or .cursor/mcp.json for a single project):
Codex CLI
ChatGPT
Settings → Security and login → toggle Developer mode. Then Settings → Plugins → + → pastehttps://mcp.ottoai.services.
After the free call, an unpaid intelligence-tool invocation returns a machine-actionable payment_required result with the route’s recoverable Base-USDC EIP-3009 x402 requirement. The hosted wrapper adds:
command: an exactcurlcommand for this tool path and input.why_paid: the tool and the response this payment buys.pricing_model: the shared hosted pricing policy.free_call: whether the observed network origin’s grant is spent, in progress, or still unspent.catalog: the always-freeotto_catalogpointer for comparing the full menu.
x_payment. The wallet and signing key stay in the client; the hosted MCP holds neither.
If an input has no free result, the server responds promptly with that payment_required requirement and leaves the grant unspent — the free call stays available for an input that can be served free. The paid route covers inputs it has never served before. If delivery is interrupted after an authorization is presented, retry the exact same tool input with that same signed payload: the paid rail replays a durably stored settled response without a second settlement, or completes the original attempt if it was not charged.
A successfully delivered or recovered paid call returns the route’s own settlement receipt in the result metadata under com.ottoai/payment-response, as { header, value } with the header name and value exactly as the paid route sent them. Keep it: it is the proof a later rating or refund claim is made against.
Hosted or local
Local x402 package
The local package is for operators who want on-demand coverage and per-call USDC settlement. Create a fresh wallet, fund it only with the Base USDC you intend to spend, and expose its key only to the local MCP process.The payer key signs bounded Base-USDC payment authorizations locally. It is never sent to Otto. Use a disposable, low-balance wallet rather than a primary wallet. Env-var syntax differs by client — Cursor expects
${env:X402_PRIVATE_KEY} where the block above uses ${X402_PRIVATE_KEY}.Tools
Both transports consume the same ten intelligence-tool definitions. The hosted transport also exposesotto_catalog, the always-free storefront tool.
otto_catalog has no input and no price. It derives the current endpoint count, paths, descriptions, and prices from the live x402 discovery surfaces rather than storing a fixed count.
For SEC field semantics and amendment handling, see SEC filings methodology.
Example prompts
Tokenized-equity thesis screen
Tokenized-equity thesis screen
Use otto_tokenized_equities with thesis "AI infrastructure chips." Show why each row matched, separate reference price from executable pricing, and do not recommend a trade.Insider and fundamentals cross-check
Insider and fundamentals cross-check
For NVDA, compare otto_insider_trades with otto_equity_intel. Separate observed SEC data from your interpretation and call out freshness.Institutional ownership
Institutional ownership
Use otto_institutional_holdings for Berkshire Hathaway (CIK 1067983). Summarize the latest top positions and amendment status without treating the filing as a current portfolio recommendation.Smart-money filing brief
Smart-money filing brief
Run otto_equity_smart_money_brief for AAPL. Extract the Form 4 and 13D/13G evidence behind the brief and describe uncertainty.Market regime context
Market regime context
Read otto_rh_season, otto_base_season, and otto_pm_crypto. Summarize where the signals agree or conflict; do not generate an order.