Strata MCP
This server provides capability-gated access to Strata and Sonar financial features, acting as a thin adapter over the Stratabook SDK. Available tools and actions include:
Capabilities:
strata_capabilitieslists Strata features currently available to MCP clients.Markets:
strata_marketslists Strata markets and Sonar quote availability (optionally including paused markets).Quotes:
strata_quoterequests a short-lived Sonar quote for a given market, returning expected/minimum output, fees, price impact, and expiry. It takes market label, side (buy/sell), input amount in atoms, and optional slippage BPS (default 0).Action graph & agent harness:
strata_action_graphexposes the live executable topology; the compact Strata Agent Harness is available as a resource or in initialization, withstrata_startprompt.Trade execution (when
trade.prepare/trade.submitenabled):strata_execution_challenge,strata_execution_prepare,strata_execution_submit.Order management (when
orders.prepare/orders.submitenabled):strata_order_challenge,strata_order_prepare,strata_order_submit,strata_order_status.Readiness:
GET /healthvalidates the live capability catalog.
Safety: never handles private keys or wallet secrets; amounts are base-10 atom strings; zero slippage by default; all calls recheck live policy.
Provides live market data and decision-ready quotes from Sonar, Strata's unified liquidity and matching system, enabling agents to discover markets and request quotes with price impact, fees, and minimum output.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Strata MCPget a quote for selling 10 SOL on SOL/USDC"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Strata MCP
Give any MCP-compatible agent direct access to Strata markets and Sonar. It works across Claude Desktop, Cursor, Windsurf, Codex and any standards-based MCP host.
Read-only access works immediately. No wallet, API key, session key, environment variable or settings screen is required to explore markets, books, prices, candles, trades, quotes and public maker data.
How you connect | Best for | What stays private |
Hosted: | Instant reads, Sonar quotes and externally signed prepare/submit flows | The shared server never receives a session secret |
Local: | Reads now; optional one-call trading after | The session secret remains in a mode-0600 file on the user's machine |
Intent, Strand and Current controls are live. A connected local MCP can execute session-backed trades, orders, TWAPs and Intent updates in one call. The hosted shared MCP exposes Intent prepare/submit instead because it deliberately never stores a user's session secret. Current tracks Strata's live mark automatically.
Tool availability follows Strata's live safety policy. If an operation is paused, its tool disappears immediately; everyday reads and quotes require no activation.
The default tool mode is deliberately compact. Agents call the requested tool
directly instead of burning discovery calls before a quote. Use
--mode advanced (or STRATA_MCP_MODE=advanced) only when an integration
needs the explicit challenge / prepare / submit protocol tools.
For the leanest and safest surface, select one domain profile at connection
time. A profile is a hard boundary: unrelated tools are absent from discovery
and cannot be called. Local clients use --profile points (or
STRATA_MCP_PROFILE=points); hosted clients use
https://api.stratabook.app/mcp?profile=points. Interface mode is independent,
so --mode advanced --profile limit_orders locally, or hosted
?mode=advanced&profile=limit_orders, exposes the complete limit-order protocol
without TWAP, maker, Points, or owner-admin tools. Omitting both preserves the
compact compatible surface.
Start locally
Read-only use needs no wallet, key, autonomy setting, or environment variable:
npx -y @stratabook/mcpTrading setup is optional. When needed, the local MCP generates its own key, opens the owner-wallet page, and saves the secret in a mode-0600 local file. The browser and Strata receive only the public key:
npx -y @stratabook/mcp connectThis opens the client-neutral Strata limit picker, registers the locally generated key with one wallet signature, saves the credential privately, and returns to the live Control Center. Run the same command again to replace the old key atomically; the old key is revoked in the same signed transaction.
There is no secret to paste into chat, no environment-variable screen, and no client config to edit after the read-only server is installed. A running MCP process detects the new, replaced, or removed local credential automatically; no client restart is required for credential changes. A package-version upgrade still requires the MCP host to launch the new process. Revoke the exact session and delete its local credential with:
npx -y @stratabook/mcp disconnectGeneric configuration for Claude Desktop, Cursor, Windsurf, and other JSON-config MCP clients:
{
"mcpServers": {
"strata": {
"command": "npx",
"args": ["-y", "@stratabook/mcp"]
}
}
}Codex happens to support a one-line client-specific installer:
codex mcp add strata -- npx -y @stratabook/mcpCheck the whole read-only connection without placing a trade:
npx -y @stratabook/mcp doctorThe private credential defaults to ~/.config/strata/mcp.json on macOS/Linux
and %APPDATA%\Strata\mcp.json on Windows. Override it with
STRATA_MCP_CREDENTIALS_FILE when a managed secret volume is required.
The compact default exposes the tools ordinary users need:
strata_markets,strata_marks,strata_book,strata_candles,strata_tradesstrata_quote— accepts0.1 SOL,20 USDC, or$20; token atoms remain optionalstrata_portfolioandstrata_market_making_statusstrata_trade— returns a live quote when trading is not connected, with one setup link; follows the user's session limits when connectedstrata_order_execute— understands instructions such as “sell 10% of available SOL at 3% above mark”; resolves exact atoms and tick rounding, submits through a warm order channel, and maintains fail-closed dead-man protectionstrata_market_making_prepareandstrata_market_making_submit_and_waitstrata_autonomy— reports the user's limits plus MCP version/mode, loaded and on-chain session consistency, execution readiness, expiry, and clock skew
Advanced mode additionally exposes the complete protocol surface, including:
strata_capabilitiesstrata_action_graphstrata_platform_graphstrata_statusstrata_candlesstrata_marksstrata_twapsstrata_twap_challengestrata_twap_cancelstrata_twap_preparestrata_twap_submitstrata_portfoliostrata_portfolio_historystrata_market_making_statusstrata_market_making_reputationstrata_market_making_prepare— start or stop a Strand/Current from a market label, decimal base size, spread, and duration; no arrays or atom conversionstrata_market_making_submit_and_wait— submit the externally signed preparation idempotently and wait for matching chain-derived statestrata_market_making_strand_prepare,strata_market_making_strand_submitstrata_market_making_current_prepare,strata_market_making_current_submitstrata_market_making_intent_prepare,strata_market_making_intent_submit— control an existing curated IntentBook seat with a Vault session; Strata pays the feestrata_vault_statusstrata_vault_setup,strata_vault_deposit,strata_vault_withdraw,strata_vault_delegate,strata_vault_policy,strata_vault_pause— prepare owner actions with Strata as sponsored fee payerstrata_vault_submit— submit the owner-signed preparation; Strata pays and broadcastsstrata_vault_submission— durable outcome of a submissionstrata_points— complete fleet-wide Points program in one read; included in default simple modestrata_rewardsstrata_referralsstrata_referral_link— prepare externally signable consent or submit the signed linkstrata_referral_claim— prepare externally signable consent or submit the signed claimstrata_bugsstrata_bug_submit— prepare externally signable bytes or submit the signed reportstrata_marketsstrata_quoteandstrata_exact_output_quote— live market quotes (spend X / receive at least Y)strata_swap_quote— live catalog-asset swap quotesstrata_execution_challengestrata_execution_preparestrata_execution_submitstrata_execution_status— recover a durable immediate-execution receiptstrata_order_challenge, whenorders.prepareis enabled for MCPstrata_order_prepare, whenorders.prepareis enabled for MCPstrata_order_submit, whenorders.submitis enabled for MCPstrata_order_status, whenorders.submitis enabled for MCP
Every initialization response carries the compact Strata Agent Harness. It
instructs an agent to call normal read tools directly. The
server publishes a lean strata://agent-router/v1 tree plus one
strata://agent-branch/{leaf}/v1 resource per isolated context. The
strata_start prompt accepts an optional branch and includes only that branch;
without one it includes only the root router. The complete audit surface remains
available at strata://agent-harness/v1.
Global authority and secret-handling invariants live once at
strata://agent-kernel/v1; branches bind its digest instead of copying it. The
canonical registered-tool ownership and profile map is available at
strata://agent-tool-registry/v1.
The live executable topology is also available as
strata://action-graph/v1. The complete entity, operation, and workflow map is
available as strata://platform-graph/v2.
The tool list follows the live public policy. Every call rechecks that policy, so a disabled capability stops immediately even if a client cached an older tool list. Tool discovery from the connected server remains authoritative for self-hosted deployments or any future policy change.
For normal maker operation, use two calls:
Call
strata_market_making_preparewithaction: "start", a label such asSOL/USDC,product: "current"or"strand",spreadBps, a decimal size such as0.01 SOL, and the maker wallet. Duration defaults to ten minutes and levels default to three.Verify and sign only
prepared.transaction_base64in the external wallet, then pass it,prepared.maker_control_id, and the unchangedpreparationTokentostrata_market_making_submit_and_wait.
The second call returns only after Strata's chain-derived maker status matches
the exact product settings. The token contains no signing authority and keeps
the two-call flow working across stateless HTTP requests or an MCP process
restart. Use action: "stop" through the same pair. The older product-specific
tools remain available for strategies that deliberately manage every low-level
array and safety field.
With a local trading session, strata_market_making_intent_execute posts or
permanently revokes an existing curated IntentBook seat in one call under the
same ask/limits/instant slider. The session signs only the SDK-verified packet;
the owner wallet does not sign each update. Exact submit retries return the
original confirmed signature while the packet remains live.
For maker funding, initialize the market Vault if needed, activate the Strand
or Current, then deposit with strata_vault_deposit. The market keeps that
available collateral while a control is live and returns it after the final
control is disabled, exhausted, expired, or cancelled. Current tracks Strata's
live mark automatically.
The matching TypeScript package ships strata-maker-conformance. Its default
safe mode exercises this hosted MCP's discovery, public maker reads, and
fresh-request Strand and Current preparations without signing or broadcasting.
The explicitly confirmed funded mode signs a Current preparation externally,
submits it in a separate MCP request, waits for chain-derived state, and stops
it through the same restart-safe continuation path. Production activation runs
the safe suite automatically and rolls back the MCP release if it fails.
Related MCP server: EODHD MCP Server
Hosted Streamable HTTP
The managed public endpoint is:
https://api.stratabook.app/mcpFor a self-hosted or development process:
strata-mcp --transport http --port 8787Place TLS and request limiting in front of /mcp. Loopback is the default bind;
the official MCP HTTP helper enforces Host validation for local installations.
GET /health is a readiness check, not a shallow process-liveness response. It
validates the live capability catalog against the bundled public contract and
agent harness. A stale SDK or incompatible contract therefore returns 503 and
blocks release activation. The same process serves the reviewed discovery
manifest at /.well-known/strata-agent.json and the graph at
/.well-known/strata-action-graph.json.
Safety
The external agent owner decides what its agent may do and configures its signer. MCP can request authorization bytes, prepare quote-bound trades, bounded TWAP placement or cancellation, or atomic place, cancel, cancel-all, replace, or bounded batch order controls, and submit the externally signed result. It accepts public keys, detached signatures, and signed transactions, never private keys, seed phrases, or wallet secrets. Simple quote and trade tools accept exact decimal strings with their symbol; conversion never uses floating-point arithmetic. Advanced protocol fields remain token atoms encoded as base-10 strings.
Quotes default to zero tolerance. maximumToleranceBps is the agent's own
floor (the most it accepts below the quoted output); price_impact_pct is
measured from the book. They are unrelated, and every quote result states both.
Available Tools
15 toolsstrata_autonomyStrata session autonomyARead-onlyIdempotent
Read how much this MCP may finish by itself: the autonomy level (ask / limits / instant), any USD ceilings, and how to change it. Read-only — the level is the user's, set out-of-band (the Agents page or the MCP's own env), never by an agent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond this by disclosing that the autonomy level is the user's, set out-of-band (Agents page or the MCP's own env) and never mutable by an agent — context about governance and modification authority that annotations cannot convey. It also enumerates the level values (ask / limits / instant), enriching the behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The first sentence front-loads the purpose with a concrete verb and enumerates exactly what's returned; the second sentence adds a critical behavioral constraint. Every clause earns its place, with no redundancy against the annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description covers the essential surface: the return contents (level enum values, ceilings, change instructions) and the read-only nature. For a simple 0-parameter read tool with strong annotations, this is nearly complete — it could marginally benefit from describing the exact response structure, but the description suffices for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters, the baseline is 4 per the rubric. The description does not discuss parameters (correctly, since there are none) but instead describes the semantic output: the autonomy level with its three possible values, USD ceilings, and how to change the level. This is the appropriate use of description space for a no-parameter configuration read.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') with a clear resource (autonomy level, USD ceilings), and states exactly what information is returned (level values ask/limits/instant, ceilings, change instructions). It clearly distinguishes itself from all sibling tools, which deal with capabilities, status, execution, or market data — none of which cover the session autonomy configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening phrase 'Read how much this MCP may finish by itself' gives clear context for when to call this tool (when the agent needs to understand its autonomy ceiling and spending limits). The read-only caveat with 'never by an agent' effectively tells the agent this is a query-only operation, though it never names an explicit alternative tool for changing settings (since none exists — that's done out-of-band).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_bookStrata order bookARead-onlyIdempotent
Read the executable order book for one opaque market ID: bids and asks, one size per price level. Top of book is the best bid and ask.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Price levels per side (default server depth; max 2000). | |
| marketId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds behavioral details such as 'executable' order book and the aggregation of orders into one size per price level. This goes beyond the annotations, providing useful context about what the tool returns and implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences that are front-loaded with the primary action and resource. Every sentence adds value: the first states what is read, the second defines top of book. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with annotations covering safety, the description sufficiently explains the output (bids/asks, one size per level, top of book) without needing extensive detail. It lacks an explicit return format but that is not critical given the simplicity and the presence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal value beyond the schema: it calls the market ID 'opaque', but the schema already defines a pattern. The depth parameter is not mentioned in the description, though the schema provides its description. With 50% schema description coverage, the description does not compensate for the marketId lacking an explicit description, but it is adequate given the pattern and required nature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the executable order book for a specific market ID, specifying bids and asks with one size per price level and explaining top-of-book. It is distinct from sibling tools like strata_bbo, which likely provides only the best bid/ask, by describing a full order book.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining full order book depth but does not explicitly contrast it with alternatives like strata_bbo or strata_trades. It lacks explicit when-to-use or when-not-to-use guidance, though the context suggests it is for depth data as opposed to top-of-book.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_candlesStrata candlesARead-onlyIdempotent
Read bounded time-bucketed candles for one opaque Strata market ID.
| Name | Required | Description | Default |
|---|---|---|---|
| toMs | Yes | ||
| fromMs | Yes | ||
| marketId | Yes | ||
| resolutionSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds 'bounded' and 'time-bucketed' as useful behavioral context, but it does not disclose return format, pagination, or edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every phrase—'bounded', 'time-bucketed', 'one opaque Strata market ID'—adds meaningful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema and annotations are rich, and the description conveys the essential read-only, single-market, candle-aggregation behavior. Since there is no output schema, return format is left implicit, but 'candles' is a standard trading concept and the description covers the core operation well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the phrases 'bounded time-bucketed' and 'one opaque Strata market ID' add meaning: fromMs/toMs delimit the range and resolutionSeconds controls bucket width. However, the description never explicitly maps or explains individual parameters beyond these allusions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Read'), a resource ('candles'), and a clear scope ('one opaque Strata market ID'). This distinguishes it from sibling market-data tools like strata_bbo, strata_trades, or strata_marks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when bounded, time-bucketed candle data for a single market is needed. It provides no explicit when-not-to-use guidance or named alternatives among the many strata_* data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_market_making_intent_executeExecute Strata IntentBook controlADestructive
Post or permanently revoke an existing curated IntentBook seat in one call. The configured Vault session verifies and signs; Strata pays the network fee. Under ask, or above a limits ceiling, this prepares the exact packet but does not sign it.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | ||
| action | Yes | ||
| marketId | Yes | ||
| maxPriceAtoms | No | ||
| minPriceAtoms | No | ||
| maxFillSizeAtoms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond annotations: the Vault session verifies and signs, Strata pays the network fee, and under certain price conditions it prepares the packet without signing. The word 'permanently' makes the destructive annotation concrete. No contradiction with the annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The core operation is front-loaded, followed by signing/fee behavior and then the conditional exception. Every sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with destructive effects, six parameters, zero schema descriptions, and no output schema, the description is not complete enough. It omits parameter semantics, return behavior, and expected failure conditions. The ambiguous 'Under ask, or above a limits ceiling' clause needs parameter-level grounding to be actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, but it only clarifies the action enum (post/revoke) indirectly. It does not explain side, marketId, maxPriceAtoms, minPriceAtoms, or maxFillSizeAtoms. The phrase 'under ask, or above a limits ceiling' hints at price limits but does not map to specific parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Post or permanently revoke an existing curated IntentBook seat', which makes the core operation clear. It does not explicitly name a sibling, but the one-call framing distinguishes it from prepare/submit flows. Slight jargon around 'curated IntentBook seat' and the conditional non-signing clause keep it from full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you want to post or revoke in a single call. It does not explicitly say when to prefer market_making_pare, submit_and_wait, or another sibling. The ask/limits-ceiling sentence gives behavioral context, not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_market_making_preparePrepare simple Strata market makingADestructive
Prepare a pro-level Strand or Current from a market label, decimal base size, spread, and duration. Strata resolves IDs, decimals, live mark, tick grid, expiry, safety bounds, and fixed on-chain arrays. Sign only the returned transaction externally, then call submit_and_wait.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | ||
| size | No | ||
| action | Yes | ||
| levels | No | ||
| market | Yes | ||
| product | Yes | ||
| duration | No | ||
| asyncOnly | No | ||
| spreadBps | No | ||
| makerWallet | Yes | ||
| levelStepBps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that Strata resolves IDs, decimals, live mark, tick grid, expiry, safety bounds, and fixed on-chain arrays, and that the tool returns a transaction requiring external signing. This adds meaningful context beyond the annotations, especially the deferred submission via submit_and_wait. It does not contradict the destructiveHint annotation, and it clarifies that this tool itself does not submit. It could still mention side effects of 'stop' or error/failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no fluff, with a clear front-loaded purpose followed by behavioral detail and the workflow instruction. Every sentence adds value and the structure guides the agent from what the tool does to what to do next.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 11 parameters, no output schema, and 0% schema description coverage. The description covers the general flow and a few key parameters, but leaves many fields (levels, levelStepBps, asyncOnly, side, action) to be inferred. An agent would likely need to inspect other tools or examples to invoke it correctly, especially for the 'stop' action or level structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It only maps 'market label', 'decimal base size', 'spread', and 'duration' to a few fields, leaving action, product, makerWallet, side, levels, levelStepBps, and asyncOnly unexplained. For 11 parameters, this is insufficient for an agent to confidently construct a correct request without guessing from names and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Prepare'), a specific resource ('Strand or Current'), and the main inputs (market label, decimal base size, spread, duration). It also explicitly distinguishes the tool from strata_market_making_submit_and_wait by prescribing the next step, making the tool's role in the workflow unambiguous. The minor mismatch between title 'simple' and description 'pro-level' does not undermine clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit workflow: prepare the transaction, sign it externally, then call submit_and_wait. This clearly situates the tool relative to its sibling submit_and_wait. However, it does not explicitly state when to choose this tool over alternatives like strata_trade or strata_quote, nor does it mention the 'stop' action or conditions for using start/stop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_market_making_statusRead Strata maker statusARead-onlyIdempotent
A maker's products, live exposure, health, and kill state in one market — public by wallet address, no signature.
| Name | Required | Description | Default |
|---|---|---|---|
| marketId | Yes | ||
| walletAddress | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotation, the description adds specific behavioral details: it is public by wallet address and requires no signature. It also enumerates the data returned (products, live exposure, health, kill state), which is not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, one sentence that efficiently conveys the tool's purpose and key behavioral traits without unnecessary detail. It is well-structured and easy to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool, the description covers essential context: what data is returned and that it is a public, read-only operation. It does not mention error cases, but that is not critical. The absence of an output schema is somewhat compensated by listing the output fields in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides some semantic context for the parameters: it implies that 'walletAddress' identifies the maker and 'marketId' identifies the market. However, it does not explicitly map these names, and the schema itself lacks parameter descriptions, so the description only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it retrieves a maker's products, live exposure, health, and kill state in a specific market. It also indicates it is public and requires no signature, which precisely defines the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It mentions that it is public and requires no signature, which gives some usage context, but it does not differentiate it from other maker-related tools like reputation or order queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_market_making_submit_and_waitSubmit and confirm Strata market makingADestructiveIdempotent
Submit the exact externally signed quickstart transaction with the unchanged preparation token and wait until Strata's chain-derived maker state confirms the product started or stopped. The token survives stateless HTTP requests and server restarts; the control ID is its default idempotency key.
| Name | Required | Description | Default |
|---|---|---|---|
| idempotencyKey | No | ||
| makerControlId | Yes | ||
| preparationToken | Yes | ||
| confirmationTimeoutMs | No | ||
| signedTransactionBase64 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavior beyond annotations: it waits for chain-derived confirmation, the preparation token survives stateless HTTP requests and server restarts, and the control ID is the default idempotency key. These details are consistent with the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=true), with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, and both earn their place: the first defines the action and completion condition, the second adds critical idempotency and token-lifecycle behavior. It is compact, front-loaded, and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core workflow is described well enough for a likely happy path, but the tool has 5 parameters, no output schema, and no parameter descriptions, so important gaps remain. In particular, confirmationTimeoutMs semantics, timeout/non-confirmation behavior, and the expected response/return shape are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for the schema's missing parameter explanations. It clarifies preparationToken ('unchanged', persistent), signedTransactionBase64 ('exact externally signed quickstart transaction'), and makerControlId via 'control ID' as the default idempotency key. It only indirectly implies idempotencyKey and leaves confirmationTimeoutMs entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Submit') and outcome ('wait until Strata's chain-derived maker state confirms the product started or stopped'). It is clear enough to distinguish from prepare and status tools, though it does not explicitly name or contrast sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies sequencing by requiring an 'exact externally signed quickstart transaction' and the 'unchanged preparation token', telling the agent this is meant to follow market_making_prepare. However, it never says when not to use the tool or names alternatives such as market_making_status for checking state, so the guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_marketsStrata marketsARead-onlyIdempotent
List Strata markets and their current Sonar quote availability.
| Name | Required | Description | Default |
|---|---|---|---|
| includePaused | No | Include markets whose public Sonar quote operation is paused. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds the context that availability is 'current', implying live data, but does not disclose response format or any edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema, but the description does not clarify the return structure or what 'Sonar quote availability' entails. Given the lack of an output schema, a bit more detail about response data would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (includePaused) is fully documented in the schema with a clear description, and schema coverage is 100%. The tool description does not add any additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the resource ('Strata markets') plus a distinguishing aspect ('current Sonar quote availability'). It clearly differentiates from sibling tools like strata_quote and strata_capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling tools (strata_capabilities, strata_quote). It does not mention use cases, prerequisites, or alternatives, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_marksStrata markARead-onlyIdempotent
Read the current customer-facing reference price for one opaque market ID.
| Name | Required | Description | Default |
|---|---|---|---|
| marketId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive, so the description does not need to repeat safety. It adds context by specifying the price is 'customer-facing' and 'current,' which informs expected semantics. However, it does not disclose behavior on invalid inputs, rate limits, or any additional side effects beyond what annotations state. Given the rich annotations, the description provides adequate additional context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no extraneous words. It front-loads the purpose and delivers the core information efficiently. Every word contributes value, and there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with strong annotations and a single parameter, the description is complete enough. It clearly states what is read, the scope, and the nature of the price. It does not describe the output format, but given no output schema, this is a minor gap. It adequately covers the essential context for an agent to invoke the tool correctly and interpret the returned price as the reference price for the specified market.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds the meaning 'opaque' to marketId, clarifying it is a system-generated identifier rather than a human-readable name. It also implies a single market ID via 'one opaque market ID,' matching the schema's required field. However, beyond that, it does not elaborate on format, constraints, or units, though the schema already defines the pattern. The addition is minimal but sufficient for a simple one-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read), the resource (current customer-facing reference price), and the scope (one opaque market ID). It distinguishes from siblings like strata_bbo or strata_quote by specifying 'reference price' rather than bid/offer or quoted price. The verb+resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when it is appropriate or not, nor does it reference any sibling tools for comparison. The context is implied (e.g., if you need a reference price, use this), but there is no explicit directive or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_order_executeExecute a Strata order controlADestructive
Place a human limit order such as 'sell 10% of available SOL at mark +3%' in one call, or use the exact-atom cancel/replace/batch controls. Strata resolves the balance, market, mark, decimals and tick grid internally. Autonomous placements keep a warm dead-man guard; if it cannot be established, the new order is cancelled fail-closed.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | ||
| action | Yes | ||
| market | No | Friendly market label such as SOL/USDC (also accepts a market ID). | |
| orderId | No | ||
| marketId | No | Advanced alternative to market. | |
| orderType | No | ||
| sizeAtoms | No | ||
| operations | No | ||
| clientOrderId | No | ||
| markOffsetBps | No | Signed offset from the current mark in basis points; +300 is 3% above mark. | |
| idempotencyKey | No | ||
| limitPriceAtoms | No | ||
| availablePercent | No | Friendly placement size: percentage of available input balance, for example 10. | |
| deadManTimeoutMs | No | Guard timeout for an autonomous placement; friendly orders default to 10000ms. | |
| selfTradePrevention | No | Optional proactive cancellation policy. Omit it for normal placement; Strata still prevents actual self-fills. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey destructive and read/write behavior; the description adds valuable context: Strata resolves balance, market, mark, decimals and tick grid internally, and autonomous placements fail-closed if the dead-man guard is not established. This is a meaningful behavioral disclosure beyond the flags and is consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with an example front-loaded and no filler or restatement of the title. The security-related final sentence earns its place, though the phrasing 'warm dead-man guard' is somewhat jargon-heavy and could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, multi-action execution tool with no output schema, the description is too thin: it leaves the operations array composition, per-action required parameters, defaults, and error/return behavior unspecified. An agent can get the high-level intent but must rely heavily on enum names and property names to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 40% schema description coverage, the description partially compensates by linking the friendly-order inputs ('availablePercent' + 'markOffsetBps') to a concrete example and mentioning exact-atom controls. But it does not clarify many parameters such as operations structure, idempotencyKey, orderType, clientOrderId, or which fields apply to which action, so the coverage gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation family: placing human limit orders and using exact-atom cancel/replace/batch controls, with a concrete example ('sell 10% of available SOL at mark +3%'). It adds specificity through the internal-resolution note. It does not explicitly contrast with sibling tools such as strata_trade or strata_market_making_intent_execute, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states primary use cases—friendly human limit orders in one call and exact-atom control operations—and implies an autonomous use case via the dead-man guard note. However, it gives no exclusions or explicit alternatives, so an agent must infer when to prefer this over related execution or market-making tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_pointsStrata PointsARead-onlyIdempotent
Read the complete fleet-wide Points program in one request: Season and epoch timing, weekly budget, allocation weights, immutable owner balance and lane breakdown, and bounded standings. All live markets participate; current-week activity remains provisional until the published finalization time.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| walletAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so the description adds useful behavioral context beyond that: current-week activity is provisional until finalization time, owner balance is immutable, and standings are bounded. This temporal nuance is valuable for interpreting results and is not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with high information density and no filler. It front-loads the primary action and resource, then packs the key outputs and behavioral caveats into a compact, readable format. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only aggregate tool, the description covers the output semantics well: timing, budget, weights, balances, standings, and provisional activity. However, the two optional parameters are entirely undocumented, and there is no output schema to compensate, leaving an agent uncertain about how walletAddress and limit affect the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter (limit, walletAddress) is explained in the description. The description mentions a 'complete' fleet-wide read, but does not clarify whether walletAddress filters the response or what limit controls. The description provides no meaning beyond the raw schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb ('Read') and a specific resource: the complete fleet-wide Points program. It enumerates the exact contents (season/epoch timing, weekly budget, allocation weights, standings), which makes its purpose obvious and differentiates it from sibling tools focused on markets, trades, or quotes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope is implied: 'complete fleet-wide Points program in one request' and 'All live markets participate' suggest this is the aggregate points overview tool rather than a per-market or per-wallet detail tool. However, it does not explicitly state when to use this tool versus alternatives, nor does it name any sibling tools or exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_portfolioStrata accountARead-onlyIdempotent
The whole account in one public read, by wallet address: balances (total / available / locked, exact USD), positions, open orders, and recent fills across every live market. No signature, no session key, no market selection.
| Name | Required | Description | Default |
|---|---|---|---|
| walletAddress | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds behavioral value by explicitly stating 'No signature, no session key' and 'public read', which are auth-related details not covered by annotations. It also clarifies the scope ('across every live market') and data format ('exact USD'), enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose ('The whole account in one public read, by wallet address') followed by a clear list of contents. It is concise, with zero filler, and every clause contributes to understanding the tool's scope and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool returns a comprehensive portfolio snapshot without an output schema, the description lists the types of data returned (balances, positions, orders, fills) and specifies 'exact USD' for balances. It also sets expectations by mentioning 'across every live market'. It could optionally clarify data freshness or size limits, but for a read-only portfolio endpoint, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, walletAddress, with a schema pattern but no description coverage (0%). The description references 'by wallet address' but adds little semantic meaning beyond what the parameter name and pattern already convey. It does not explain the address format or requirements, but the pattern is self-explanatory for those familiar with crypto addresses. Given the simplicity, the description is adequate but not value-adding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'The whole account in one public read, by wallet address' and enumerates the specific contents (balances, positions, open orders, recent fills) across all live markets. It distinguishes itself from siblings by emphasizing 'one public read' and 'no market selection', which differentiates it from market-specific tools like strata_bbo or strata_order_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: when you need a complete snapshot of an account without filtering by market. It does not explicitly name alternatives or state when not to use, but the phrase 'no market selection' implies it's not for granular per-market queries. The sibling tools like strata_order_status or strata_execution_status suggest alternatives exists, but the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_quoteSonar quoteARead-only
Request a short-lived Sonar quote. Use a market label and a human amount such as 0.1 SOL, 20 USDC, or $20; exact input atoms remain available for advanced clients. Returns expected output, fees, price impact, and expiry.
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | Buy or sell the market's base asset. | |
| amount | No | Human input amount, for example 0.1 SOL, 20 USDC, or $20. | |
| market | Yes | Market label such as SOL/USDC, or its public market ID. | |
| amountInAtoms | No | Advanced: exact input amount in the input token's smallest atomic unit. | |
| maximumToleranceBps | No | The most you accept below the quoted output, in basis points (default 0: the quoted output exactly). This is YOUR choice. It is not price impact — price_impact_pct in the response is measured from the book and is not a setting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior, so the bar is lower. The description adds meaningful context by noting the quote is short-lived, returns an expiry, and includes fees and price impact. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states purpose and lifespan, the second covers how to specify inputs and what the response contains. No filler or redundant restatement of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly enumerates the key return fields: expected output, fees, price impact, and expiry. Combined with the well-described input schema and annotations, this is sufficient for an agent to invoke the tool correctly, though it never explicitly says the quote does not execute a trade.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's examples for amount and market mirror the schema rather than adding new meaning, and it adds little beyond pointing at advanced atom inputs. maximumToleranceBps and side are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Request a short-lived Sonar quote') and states the tool's output. It is clearly a quoting tool, but it does not explicitly distinguish itself from the execution sibling strata_trade or other market tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives usage instructions for inputs ('Use a market label and a human amount') and notes advanced atom inputs, but it never says when to prefer this tool over alternatives such as strata_trade. Usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_tradeTrade on StrataADestructive
Quote and trade in one obvious tool. Human amounts such as 0.1 SOL and $20 are supported. Without a trading connection it returns the live read-only quote plus one setup link; with a session it follows the user's autonomy limits and may submit.
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | ||
| amount | No | Human input amount, for example 0.1 SOL, 20 USDC, or $20. | |
| market | Yes | Market label, for example SOL/USDC. | |
| amountInAtoms | No | Advanced alternative: exact input token atoms. | |
| idempotencyKey | No | ||
| maximumToleranceBps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, so the description's job is to refine those. It does: submission only happens with a session, it respects user autonomy limits, and without a connection it degrades to a harmless read-only quote. This conditionality is exactly the nuance annotations cannot express, and it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each with a distinct job: purpose, parameter semantics, and conditional behavior. The purpose is front-loaded. Minor deductions for the filler word "obvious" and for the human-amounts sentence partially duplicating the schema description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the no-session return path (quote plus setup link) but not the session path's return behavior, which matters for an agent deciding whether to proceed. With no output schema and six parameters, it also leaves the meaning of "autonomy limits" and the relationship to siblings like strata_quote and strata_autonomy unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 50%, the description should compensate for undocumented parameters, but it only reinforces what the schema already says about amount ("Human amounts such as 0.1 SOL and $20 are supported" mirrors the schema example). It adds nothing about idempotencyKey or maximumToleranceBps, both of which lack schema descriptions — a genuine gap for a potentially destructive trading tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening phrase "Quote and trade in one obvious tool" names specific actions (quote, trade) and a resource (Strata markets), making the tool's dual role immediately clear. It implicitly distinguishes itself from strata_quote by covering both quote and trade, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two-state behavior (no trading connection → read-only quote + setup link; with a session → follows autonomy limits and may submit) tells the agent how the tool behaves in different contexts, which implies when it is safe to call. However, it never explicitly names alternatives like strata_quote for quote-only needs, nor states exclusions, so the agent must infer routing from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strata_tradesStrata recent tradesARead-onlyIdempotent
Read recent anonymized prints for one opaque market ID: price, size, side, and time.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most recent prints to return (default server limit; max 500). | |
| marketId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive. The description adds 'anonymized' prints and specifies the data fields (price, size, side, time), providing behavioral details beyond the annotations about the nature of the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the verb (read), the resource (recent anonymized prints), the qualifier (for one opaque market ID), and the output contents (price, size, side, time). No redundant or extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description sufficiently conveys what the tool does and what returns, but omits details like default limit, pagination, or potential error cases. However, given the lack of an output schema and the simple nature of the operation, it covers the essential aspects adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers `limit` with a description, but `marketId` has no description beyond the pattern. The tool description adds 'one opaque market ID', clarifying that marketId is a hash-like identifier, but doesn't explain how to obtain or interpret it. With 50% schema coverage, the description provides minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads recent anonymized prints, identifies the target resource (a market ID), and lists the return fields (price, size, side, time). This distinguishes it from sibling tools like strata_candles or strata_bbo by its specific focus on trade prints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving recent anonymous trades for a specific market, but does not explicitly contrast with alternatives or state when not to use it. It provides no direct comparison to sibling tools, leaving the agent to infer the scope from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.2.22- Added
strata_points
2 tool updates
v0.2.19- Added
strata_market_making_intent_execute - Added
strata_order_execute
45 tool updates
v0.2.17- Removed
strata_action_graph - Removed
strata_bbo - Removed
strata_bug_submit - Removed
strata_bugs - Removed
strata_capabilities - Removed
strata_exact_output_quote - Removed
strata_execution_challenge - Removed
strata_execution_prepare - Removed
strata_execution_status - Removed
strata_execution_submit - Removed
strata_market_making_current_prepare - Removed
strata_market_making_current_submit - Added
strata_market_making_prepare - Removed
strata_market_making_reputation - Removed
strata_market_making_strand_prepare - Removed
strata_market_making_strand_submit - Added
strata_market_making_submit_and_wait - Removed
strata_order_challenge - Removed
strata_order_prepare - Removed
strata_order_status - Removed
strata_order_submit - Removed
strata_platform_graph - Removed
strata_portfolio_history - Changed
strata_quote3 fields changed- added
Input schema / properties / amountAdded value: +{ + "description": "Human input amount, for example 0.1 SOL, 20 USDC, or $20.", + "maxLength": 64, + "minLength": 1, + "type": "string" +} - changed
Input schema / properties / amountInAtoms / descriptionPrevious value: -"Exact input amount in the input token's smallest atomic unit."New value: +"Advanced: exact input amount in the input token's smallest atomic unit." - changed
Input schema / requiredPrevious value: -[ - "market", - "side", - "amountInAtoms" -]New value: +[ + "market", + "side" +]
- Removed
strata_referral_claim - Removed
strata_referral_link - Removed
strata_referrals - Removed
strata_rewards - Removed
strata_status - Removed
strata_swap_quote - Added
strata_trade - Removed
strata_twap_cancel - Removed
strata_twap_challenge - Removed
strata_twap_prepare - Removed
strata_twap_submit - Removed
strata_twaps - Removed
strata_vault_delegate - Removed
strata_vault_deposit - Removed
strata_vault_pause - Removed
strata_vault_policy - Removed
strata_vault_setup - Removed
strata_vault_status - Removed
strata_vault_submission - Removed
strata_vault_submit - Removed
strata_vault_withdraw
4 tool updates
v0.2.2- Added
strata_market_making_current_prepare - Added
strata_market_making_current_submit - Added
strata_market_making_strand_prepare - Added
strata_market_making_strand_submit
40 tool updates
v0.2.0- Added
strata_autonomy - Added
strata_bbo - Added
strata_book - Added
strata_bug_submit - Added
strata_bugs - Added
strata_candles - Added
strata_exact_output_quote - Changed
strata_execution_challenge2 fields changed- changed
Input schema / properties / accountSequence / descriptionPrevious value: -"Current Vault account sequence as an unsigned decimal string."New value: +"Optional Vault market account sequence as an unsigned decimal string. Omit it and Strata resolves the next sequence from the Vault's confirmed market account." - changed
Input schema / requiredPrevious value: -[ - "market", - "quoteId", - "ownerWallet", - "sessionPublicKey", - "accountSequence" -]New value: +[ + "market", + "quoteId", + "ownerWallet", + "sessionPublicKey" +]
- Changed
strata_execution_prepare7 fields changed- added
Input schema / properties / accountSequenceAdded value: +{ + "maxLength": 20, + "pattern": "^[0-9]+$", + "type": "string" +} - changed
Input schema / properties / authorizationSignature / descriptionPrevious value: -"Base58 Ed25519 signature made externally over the challenge payload."New value: +"Base58 Ed25519 signature made externally over the challenge payload (two-step path)." - changed
Input schema / properties / challengeId / descriptionPrevious value: -"Execution challenge ID returned by Strata."New value: +"Execution challenge ID returned by Strata (two-step path)." - added
Input schema / properties / ownerWalletAdded value: +{ + "maxLength": 44, + "minLength": 32, + "type": "string" +} - added
Input schema / properties / quoteIdAdded value: +{ + "description": "Unexpired Sonar quote ID (direct, one-signature path).", + "pattern": "^sq_[0-9a-f]{32}$", + "type": "string" +} - added
Input schema / properties / sessionPublicKeyAdded value: +{ + "maxLength": 44, + "minLength": 32, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "market", - "challengeId", - "authorizationSignature" -]New value: +[ + "market" +]
- Added
strata_execution_status - Added
strata_market_making_reputation - Added
strata_market_making_status - Added
strata_marks - Changed
strata_order_challenge1 field changed- added
Input schema / properties / accountSequence / descriptionAdded value: +"Optional Vault market account sequence. Omit it and Strata resolves the next sequence from the Vault's confirmed market account."
- Changed
strata_order_prepare12 fields changed- added
Input schema / properties / accountSequenceAdded value: +{ + "maxLength": 20, + "pattern": "^[0-9]+$", + "type": "string" +} - added
Input schema / properties / actionAdded value: +{ + "enum": [ + "place", + "cancel", + "cancel_all", + "replace", + "batch" + ], + "type": "string" +} - added
Input schema / properties / clientOrderIdAdded value: +{ + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9._-]+$", + "type": "string" +} - added
Input schema / properties / limitPriceAtomsAdded value: +{ + "maxLength": 20, + "pattern": "^[1-9][0-9]*$", + "type": "string" +} - added
Input schema / properties / operationsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "accountSequence": { + "maxLength": 20, + "pattern": "^[0-9]+$", + "type": "string" + }, + "action": { + "enum": [ + "place", + "cancel", + "replace" + ], + "type": "string" + }, + "clientOrderId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9._-]+$", + "type": "string" + }, + "limitPriceAtoms": { + "maxLength": 20, + "pattern": "^[1-9][0-9]*$", + "type": "string" + }, + "orderId": { + "pattern": "^order_[0-9a-f]{32}$", + "type": "string" + }, + "orderType": { + "enum": [ + "good_until_cancelled", + "post_only" + ], + "type": "string" + }, + "side": { + "enum": [ + "buy", + "sell" + ], + "type": "string" + }, + "sizeAtoms": { + "maxLength": 20, + "pattern": "^[1-9][0-9]*$", + "type": "string" + } + }, + "required": [ + "action" + ], + "type": "object" + }, + "maxItems": 6, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / orderIdAdded value: +{ + "pattern": "^order_[0-9a-f]{32}$", + "type": "string" +} - added
Input schema / properties / orderTypeAdded value: +{ + "enum": [ + "good_until_cancelled", + "post_only" + ], + "type": "string" +} - added
Input schema / properties / ownerWalletAdded value: +{ + "maxLength": 44, + "minLength": 32, + "type": "string" +} - added
Input schema / properties / sessionPublicKeyAdded value: +{ + "maxLength": 44, + "minLength": 32, + "type": "string" +} - added
Input schema / properties / sideAdded value: +{ + "enum": [ + "buy", + "sell" + ], + "type": "string" +} - added
Input schema / properties / sizeAtomsAdded value: +{ + "maxLength": 20, + "pattern": "^[1-9][0-9]*$", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "marketId", - "challengeId", - "authorizationSignature" -]New value: +[ + "marketId" +]
- Added
strata_platform_graph - Added
strata_portfolio - Added
strata_portfolio_history - Changed
strata_quote2 fields changed- added
Input schema / properties / maximumToleranceBpsAdded value: +{ + "default": 0, + "description": "The most you accept below the quoted output, in basis points (default 0: the quoted output exactly). This is YOUR choice. It is not price impact — price_impact_pct in the response is measured from the book and is not a setting.", + "maximum": 1000, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / slippageBpsRemoved value: -{ - "default": 0, - "description": "Optional maximum execution tolerance in basis points. The default 0 requires exact quoted output.", - "maximum": 1000, - "minimum": 0, - "type": "integer" -}
- Added
strata_referral_claim - Added
strata_referral_link - Added
strata_referrals - Added
strata_rewards - Added
strata_status - Added
strata_swap_quote - Added
strata_trades - Added
strata_twap_cancel - Added
strata_twap_challenge - Added
strata_twap_prepare - Added
strata_twap_submit - Added
strata_twaps - Added
strata_vault_delegate - Added
strata_vault_deposit - Added
strata_vault_pause - Added
strata_vault_policy - Added
strata_vault_setup - Added
strata_vault_status - Added
strata_vault_submission - Added
strata_vault_submit - Added
strata_vault_withdraw
8 tool updates
v0.1.12- Added
strata_action_graph - Added
strata_execution_challenge - Added
strata_execution_prepare - Added
strata_execution_submit - Added
strata_order_challenge - Added
strata_order_prepare - Added
strata_order_status - Added
strata_order_submit
3 tool updates
v0.1.2- First observed
strata_capabilities - First observed
strata_markets - First observed
strata_quote
TDQS
Scored across 15 tools
Each tool targets a distinct resource or action, and the descriptions clearly separate market data, quoting, trading, and market-making. However, strata_trade and strata_trades are one character apart, and strata_quote/strata_trade/strata_order_execute overlap in intent, so an agent may need to read descriptions carefully.
All names share the strata_ prefix and use snake_case, and subdomain groupings like market_making_* and order_execute are consistent. But read tools are bare nouns (portfolio, candles, marks) while write tools are verbs, and trades/trade and markets/marks are lexically close, so the convention is not perfectly uniform.
Fifteen tools is at the high end of the well-scoped range, but each represents a distinct capability: account snapshot, points, market data, quoting, execution, market-making, and autonomy. No tool feels like filler or duplication despite the rich feature set.
The surface covers account/portfolio, points, market discovery, market data, quoting, market and limit order execution, market-making lifecycle, IntentBook seats, and autonomy controls. It has no obvious dead ends: order_execute handles cancel/replace/batch, and market-making has prepare/submit/status/intent_execute.
Maintenance
Related MCP Connectors
Connect any MCP client to MetaTrader 4/5 to read prices, manage positions, and place trades.
Live prices, perps, prediction markets and a paper trading desk over one MCP.
Agent-native insurance quoting protocol — sandbox, MCP + REST, eligibility pre-flight
33 pay-per-call market and news data tools over MCP with free discovery and x402 payments.
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables querying real-time and historical financial market data for stocks, options, forex, and crypto, including quotes, trades, technical indicators, and reference data through a set of MCP tools.713MIT
- AlicenseNot gradedqualityCmaintenanceEnables access to financial market data including EOD, intraday, fundamentals, news, and more via 75 read-only MCP tools.5MIT
- FlicenseCqualityDmaintenanceEnables access to Bloomberg financial data via MCP, requiring a Bloomberg Terminal.959-

inferventisofficial
FlicenseNot gradedqualityDmaintenanceEnables AI agents to access real-time financial data, news, and web reading through a single MCP endpoint with zero installation.-