Agent guide
Discover Omni for free, then approve each paid MCP tool call.
Omni exposes a stateless Streamable HTTP MCP endpoint. The catalog tool is free; the documented typed helper subset covers five paid research tools using x402 MCP payment requirements and a paid retry. listTools() determines the deployed inventory and schemas. Pay the amount in the challenge for that call.
At a glance
- Transport
- Streamable HTTP Canonical endpoint under /api/x402/mcp.
- Free tool
- get_market_catalog Discover prices, networks, symbols, and schemas.
- Paid tools
- 5 Typed helpers: News, Market Risk, Entity Resolution, Market Carry, and Pre-Market Roundup. Other read-only tools use the live list.
Why It Matters
What traders and researchers should take away
- Tool-using models can discover exact argument shapes and prices before requesting a paid result.
- An application-owned approval callback keeps the model from becoming the final spending authority.
- The same structured result can be used by a general assistant or a broker-connected research workflow.
How it works
What the product uses behind the scenes
- The native endpoint is https://omniterminal.app/api/x402/mcp using MCP protocol 2025-06-18 and the official @x402/mcp wrapper.
- Coinbase Bazaar offers a separate buyer-facing MCP server that discovers and proxies all thirteen indexed HTTP products; it is not a duplicate native Omni tool inventory.
- OmniMcpClient validates arguments before the tool call and validates the paid JSON product plus settlement receipt after the retry.
Notes
Things to know
- A generic MCP host that does not support x402 payment metadata can list tools but cannot complete paid calls automatically.
- The SDK denies paid calls when approvePayment is absent or returns false.
- Do not put a funded private key in a desktop client configuration file that is synced, shared, or committed.
Guide
Steps
- Connect the endpoint
Use
https://omniterminal.app/api/x402/mcpas a Streamable HTTP MCP server. - Call the free catalog
Call
get_market_catalogwithout a wallet and inspect tool names, schemas, prices, networks, and supported symbols. - Add a payment policy
Provide a dedicated buyer key only to an x402-aware client, enforce
maxPaymentUsd, and require an application-owned approval callback. - Call one paid tool
Choose
get_market_moving_events,get_market_risk_context,resolve_market_entities,get_market_carry, orget_premarket_roundupand validate its receipt and schema. The roundup requires its own explicit approval and a cap sufficient for its current quote.
Safety
Before using this workflow
- Treat tool selection by the model as a request, not final payment approval.
- Reject arguments outside the published allowlists and bounded ranges before payment.
- Use ACM or another buyer policy layer when you need daily budgets, human approval, reconciliation, and revocation.
Next
Open the workflow
- Open Agent Quickstart Compare HTTP, MCP, and SDK paths.
- View MCP source example Run the committed client.
Minimal x402-aware MCP example
The application approves payment; the model does not receive the buyer key.
import { OmniMcpClient } from "@omni-terminal/sdk";
const privateKey = process.env.EVM_PRIVATE_KEY;
if (!privateKey || !/^0x[0-9a-fA-F]{64}$/.test(privateKey)) {
throw new Error("EVM_PRIVATE_KEY must be a 32-byte hex key");
}
const buyerKey = /** @type {`0x${string}`} */ (privateKey);
const client = await new OmniMcpClient({
privateKey: buyerKey,
maxPaymentUsd: 0.010,
approvePayment: ({ toolName, paymentRequired }) => {
console.log({ toolName, accepts: paymentRequired.accepts });
return toolName === "get_market_risk_context";
}
}).connect();
try {
console.log((await client.catalogData()).data); // free
const result = await client.marketRiskData({
symbol: "BTC",
scope: "current",
limit: 5
});
console.log({ schema: result.data.schema, payment: result.payment });
} finally {
await client.close();
}- The free catalog must never trigger payment; the SDK treats that as a contract error.
- The approvePayment callback can inspect the selected tool and current requirements.
- The independent payment-client cap still applies when the callback returns true.
Live tool list
The map below is the typed SDK set. The server can list more read-only tools.
import { OmniMcpClient } from "@omni-terminal/sdk";
const client = await new OmniMcpClient().connect();
try {
const listed = await client.listTools();
for (const tool of listed.tools) console.log(tool.name);
} finally {
await client.close();
}- This call is free. It does not place orders or move collateral.
- SDK 0.8.1 methods cover the six names in the tool map. A name with no method is still called through your MCP host.
- Approve the amount in the payment challenge for that call. A price in the tool map does not apply to the other tools.
Native tool map
Choose the smallest tool that completes the task.
- get_market_catalog: free discovery.
- get_market_moving_events: 0.010 USDC for bounded equities, crypto, macro, or forex catalysts.
- get_premarket_roundup: 0.100 USDC for the published roundup, with optional date and bounded limit. Confirm current terms in the live payment challenge before approving.
- get_market_risk_context: 0.010 USDC for joined liquidation levels, stress, funding, and news.
- resolve_market_entities: 0.001 USDC for 1–20 current aliases.
- get_market_carry: 0.003 USDC for current 1h funding with mechanical 8h, 1d, and APR context.
Coinbase Bazaar MCP alternative
Use Bazaar when the agent already discovers x402 HTTP resources through Coinbase CDP.
- Connect https://api.cdp.coinbase.com/platform/v2/x402/discovery/mcp.
- Call search_resources for Omni and inspect the returned HTTP resource descriptors.
- Pass the selected generated tool name and arguments to proxy_tool_call.
- The proxy returns the same bounded x402 payment requirement and product; the currently indexed Bazaar resources remain HTTP resources.
Typed Omni MCP helpers cover six tools: one free catalog plus five paid products. Use listTools() to verify the deployed inventory and tool schemas. Coinbase Bazaar MCP exposes the currently indexed HTTP products through its own search/proxy interface.
References
Implementation references
MCP example
https://github.com/InTheta/omni-universe-sdks/blob/main/packages/typescript/examples/mcp-all-tools.tsGuarded free and paid native tool lifecycle.
MCP client
https://github.com/InTheta/omni-universe-sdks/blob/main/packages/typescript/src/mcp.tsTransport, approvals, validation, and payment result handling.
x402 API reference
omni-terminal/docs/X402_API_REFERENCE.mdNative MCP and Bazaar MCP contracts.