Skip to main content
Glama
alsk1992
by alsk1992

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: https://api.stratabook.app/mcp

Instant reads, Sonar quotes and externally signed prepare/submit flows

The shared server never receives a session secret

Local: npx -y @stratabook/mcp

Reads now; optional one-call trading after connect

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/mcp

Trading 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 connect

This 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 disconnect

Generic 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/mcp

Check the whole read-only connection without placing a trade:

npx -y @stratabook/mcp doctor

The 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_trades

  • strata_quote — accepts 0.1 SOL, 20 USDC, or $20; token atoms remain optional

  • strata_portfolio and strata_market_making_status

  • strata_trade — returns a live quote when trading is not connected, with one setup link; follows the user's session limits when connected

  • strata_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 protection

  • strata_market_making_prepare and strata_market_making_submit_and_wait

  • strata_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_capabilities

  • strata_action_graph

  • strata_platform_graph

  • strata_status

  • strata_candles

  • strata_marks

  • strata_twaps

  • strata_twap_challenge

  • strata_twap_cancel

  • strata_twap_prepare

  • strata_twap_submit

  • strata_portfolio

  • strata_portfolio_history

  • strata_market_making_status

  • strata_market_making_reputation

  • strata_market_making_prepare — start or stop a Strand/Current from a market label, decimal base size, spread, and duration; no arrays or atom conversion

  • strata_market_making_submit_and_wait — submit the externally signed preparation idempotently and wait for matching chain-derived state

  • strata_market_making_strand_prepare, strata_market_making_strand_submit

  • strata_market_making_current_prepare, strata_market_making_current_submit

  • strata_market_making_intent_prepare, strata_market_making_intent_submit — control an existing curated IntentBook seat with a Vault session; Strata pays the fee

  • strata_vault_status

  • strata_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 payer

  • strata_vault_submit — submit the owner-signed preparation; Strata pays and broadcasts

  • strata_vault_submission — durable outcome of a submission

  • strata_points — complete fleet-wide Points program in one read; included in default simple mode

  • strata_rewards

  • strata_referrals

  • strata_referral_link — prepare externally signable consent or submit the signed link

  • strata_referral_claim — prepare externally signable consent or submit the signed claim

  • strata_bugs

  • strata_bug_submit — prepare externally signable bytes or submit the signed report

  • strata_markets

  • strata_quote and strata_exact_output_quote — live market quotes (spend X / receive at least Y)

  • strata_swap_quote — live catalog-asset swap quotes

  • strata_execution_challenge

  • strata_execution_prepare

  • strata_execution_submit

  • strata_execution_status — recover a durable immediate-execution receipt

  • strata_order_challenge, when orders.prepare is enabled for MCP

  • strata_order_prepare, when orders.prepare is enabled for MCP

  • strata_order_submit, when orders.submit is enabled for MCP

  • strata_order_status, when orders.submit is 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:

  1. Call strata_market_making_prepare with action: "start", a label such as SOL/USDC, product: "current" or "strand", spreadBps, a decimal size such as 0.01 SOL, and the maker wallet. Duration defaults to ten minutes and levels default to three.

  2. Verify and sign only prepared.transaction_base64 in the external wallet, then pass it, prepared.maker_control_id, and the unchanged preparationToken to strata_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/mcp

For a self-hosted or development process:

strata-mcp --transport http --port 8787

Place 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 tools
strata_autonomyStrata session autonomyA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 bookA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoPrice levels per side (default server depth; max 2000).
marketIdYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 candlesA
Read-onlyIdempotent

Read bounded time-bucketed candles for one opaque Strata market ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
toMsYes
fromMsYes
marketIdYes
resolutionSecondsNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 controlA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
actionYes
marketIdYes
maxPriceAtomsNo
minPriceAtomsNo
maxFillSizeAtomsNo

TDQS

A3.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 makingA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
sizeNo
actionYes
levelsNo
marketYes
productYes
durationNo
asyncOnlyNo
spreadBpsNo
makerWalletYes
levelStepBpsNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 statusA
Read-onlyIdempotent

A maker's products, live exposure, health, and kill state in one market — public by wallet address, no signature.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketIdYes
walletAddressYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 makingA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idempotencyKeyNo
makerControlIdYes
preparationTokenYes
confirmationTimeoutMsNo
signedTransactionBase64Yes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 marketsA
Read-onlyIdempotent

List Strata markets and their current Sonar quote availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
includePausedNoInclude markets whose public Sonar quote operation is paused.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 markA
Read-onlyIdempotent

Read the current customer-facing reference price for one opaque market ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketIdYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 controlA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
actionYes
marketNoFriendly market label such as SOL/USDC (also accepts a market ID).
orderIdNo
marketIdNoAdvanced alternative to market.
orderTypeNo
sizeAtomsNo
operationsNo
clientOrderIdNo
markOffsetBpsNoSigned offset from the current mark in basis points; +300 is 3% above mark.
idempotencyKeyNo
limitPriceAtomsNo
availablePercentNoFriendly placement size: percentage of available input balance, for example 10.
deadManTimeoutMsNoGuard timeout for an autonomous placement; friendly orders default to 10000ms.
selfTradePreventionNoOptional proactive cancellation policy. Omit it for normal placement; Strata still prevents actual self-fills.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 PointsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
walletAddressNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 accountA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletAddressYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 quoteA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYesBuy or sell the market's base asset.
amountNoHuman input amount, for example 0.1 SOL, 20 USDC, or $20.
marketYesMarket label such as SOL/USDC, or its public market ID.
amountInAtomsNoAdvanced: exact input amount in the input token's smallest atomic unit.
maximumToleranceBpsNoThe 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

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 StrataA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYes
amountNoHuman input amount, for example 0.1 SOL, 20 USDC, or $20.
marketYesMarket label, for example SOL/USDC.
amountInAtomsNoAdvanced alternative: exact input token atoms.
idempotencyKeyNo
maximumToleranceBpsNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 tradesA
Read-onlyIdempotent

Read recent anonymized prints for one opaque market ID: price, size, side, and time.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMost recent prints to return (default server limit; max 500).
marketIdYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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. 1 tool updatev0.2.22
    • Addedstrata_points
  2. 2 tool updatesv0.2.19
    • Addedstrata_market_making_intent_execute
    • Addedstrata_order_execute
  3. 45 tool updatesv0.2.17
    • Removedstrata_action_graph
    • Removedstrata_bbo
    • Removedstrata_bug_submit
    • Removedstrata_bugs
    • Removedstrata_capabilities
    • Removedstrata_exact_output_quote
    • Removedstrata_execution_challenge
    • Removedstrata_execution_prepare
    • Removedstrata_execution_status
    • Removedstrata_execution_submit
    • Removedstrata_market_making_current_prepare
    • Removedstrata_market_making_current_submit
    • Addedstrata_market_making_prepare
    • Removedstrata_market_making_reputation
    • Removedstrata_market_making_strand_prepare
    • Removedstrata_market_making_strand_submit
    • Addedstrata_market_making_submit_and_wait
    • Removedstrata_order_challenge
    • Removedstrata_order_prepare
    • Removedstrata_order_status
    • Removedstrata_order_submit
    • Removedstrata_platform_graph
    • Removedstrata_portfolio_history
    • Changedstrata_quote3 fields changed
      • addedInput schema / properties / amount
        Added value: +{
        +  "description": "Human input amount, for example 0.1 SOL, 20 USDC, or $20.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / amountInAtoms / description
        Previous 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."
      • changedInput schema / required
        Previous value: -[
        -  "market",
        -  "side",
        -  "amountInAtoms"
        -]New value: +[
        +  "market",
        +  "side"
        +]
    • Removedstrata_referral_claim
    • Removedstrata_referral_link
    • Removedstrata_referrals
    • Removedstrata_rewards
    • Removedstrata_status
    • Removedstrata_swap_quote
    • Addedstrata_trade
    • Removedstrata_twap_cancel
    • Removedstrata_twap_challenge
    • Removedstrata_twap_prepare
    • Removedstrata_twap_submit
    • Removedstrata_twaps
    • Removedstrata_vault_delegate
    • Removedstrata_vault_deposit
    • Removedstrata_vault_pause
    • Removedstrata_vault_policy
    • Removedstrata_vault_setup
    • Removedstrata_vault_status
    • Removedstrata_vault_submission
    • Removedstrata_vault_submit
    • Removedstrata_vault_withdraw
  4. 4 tool updatesv0.2.2
    • Addedstrata_market_making_current_prepare
    • Addedstrata_market_making_current_submit
    • Addedstrata_market_making_strand_prepare
    • Addedstrata_market_making_strand_submit
  5. 40 tool updatesv0.2.0
    • Addedstrata_autonomy
    • Addedstrata_bbo
    • Addedstrata_book
    • Addedstrata_bug_submit
    • Addedstrata_bugs
    • Addedstrata_candles
    • Addedstrata_exact_output_quote
    • Changedstrata_execution_challenge2 fields changed
      • changedInput schema / properties / accountSequence / description
        Previous 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."
      • changedInput schema / required
        Previous value: -[
        -  "market",
        -  "quoteId",
        -  "ownerWallet",
        -  "sessionPublicKey",
        -  "accountSequence"
        -]New value: +[
        +  "market",
        +  "quoteId",
        +  "ownerWallet",
        +  "sessionPublicKey"
        +]
    • Changedstrata_execution_prepare7 fields changed
      • addedInput schema / properties / accountSequence
        Added value: +{
        +  "maxLength": 20,
        +  "pattern": "^[0-9]+$",
        +  "type": "string"
        +}
      • changedInput schema / properties / authorizationSignature / description
        Previous value: -"Base58 Ed25519 signature made externally over the challenge payload."New value: +"Base58 Ed25519 signature made externally over the challenge payload (two-step path)."
      • changedInput schema / properties / challengeId / description
        Previous value: -"Execution challenge ID returned by Strata."New value: +"Execution challenge ID returned by Strata (two-step path)."
      • addedInput schema / properties / ownerWallet
        Added value: +{
        +  "maxLength": 44,
        +  "minLength": 32,
        +  "type": "string"
        +}
      • addedInput schema / properties / quoteId
        Added value: +{
        +  "description": "Unexpired Sonar quote ID (direct, one-signature path).",
        +  "pattern": "^sq_[0-9a-f]{32}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionPublicKey
        Added value: +{
        +  "maxLength": 44,
        +  "minLength": 32,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "market",
        -  "challengeId",
        -  "authorizationSignature"
        -]New value: +[
        +  "market"
        +]
    • Addedstrata_execution_status
    • Addedstrata_market_making_reputation
    • Addedstrata_market_making_status
    • Addedstrata_marks
    • Changedstrata_order_challenge1 field changed
      • addedInput schema / properties / accountSequence / description
        Added value: +"Optional Vault market account sequence. Omit it and Strata resolves the next sequence from the Vault's confirmed market account."
    • Changedstrata_order_prepare12 fields changed
      • addedInput schema / properties / accountSequence
        Added value: +{
        +  "maxLength": 20,
        +  "pattern": "^[0-9]+$",
        +  "type": "string"
        +}
      • addedInput schema / properties / action
        Added value: +{
        +  "enum": [
        +    "place",
        +    "cancel",
        +    "cancel_all",
        +    "replace",
        +    "batch"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / clientOrderId
        Added value: +{
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9._-]+$",
        +  "type": "string"
        +}
      • addedInput schema / properties / limitPriceAtoms
        Added value: +{
        +  "maxLength": 20,
        +  "pattern": "^[1-9][0-9]*$",
        +  "type": "string"
        +}
      • addedInput schema / properties / operations
        Added 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"
        +}
      • addedInput schema / properties / orderId
        Added value: +{
        +  "pattern": "^order_[0-9a-f]{32}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / orderType
        Added value: +{
        +  "enum": [
        +    "good_until_cancelled",
        +    "post_only"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / ownerWallet
        Added value: +{
        +  "maxLength": 44,
        +  "minLength": 32,
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionPublicKey
        Added value: +{
        +  "maxLength": 44,
        +  "minLength": 32,
        +  "type": "string"
        +}
      • addedInput schema / properties / side
        Added value: +{
        +  "enum": [
        +    "buy",
        +    "sell"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sizeAtoms
        Added value: +{
        +  "maxLength": 20,
        +  "pattern": "^[1-9][0-9]*$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "marketId",
        -  "challengeId",
        -  "authorizationSignature"
        -]New value: +[
        +  "marketId"
        +]
    • Addedstrata_platform_graph
    • Addedstrata_portfolio
    • Addedstrata_portfolio_history
    • Changedstrata_quote2 fields changed
      • addedInput schema / properties / maximumToleranceBps
        Added 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"
        +}
      • removedInput schema / properties / slippageBps
        Removed value: -{
        -  "default": 0,
        -  "description": "Optional maximum execution tolerance in basis points. The default 0 requires exact quoted output.",
        -  "maximum": 1000,
        -  "minimum": 0,
        -  "type": "integer"
        -}
    • Addedstrata_referral_claim
    • Addedstrata_referral_link
    • Addedstrata_referrals
    • Addedstrata_rewards
    • Addedstrata_status
    • Addedstrata_swap_quote
    • Addedstrata_trades
    • Addedstrata_twap_cancel
    • Addedstrata_twap_challenge
    • Addedstrata_twap_prepare
    • Addedstrata_twap_submit
    • Addedstrata_twaps
    • Addedstrata_vault_delegate
    • Addedstrata_vault_deposit
    • Addedstrata_vault_pause
    • Addedstrata_vault_policy
    • Addedstrata_vault_setup
    • Addedstrata_vault_status
    • Addedstrata_vault_submission
    • Addedstrata_vault_submit
    • Addedstrata_vault_withdraw
  6. 8 tool updatesv0.1.12
    • Addedstrata_action_graph
    • Addedstrata_execution_challenge
    • Addedstrata_execution_prepare
    • Addedstrata_execution_submit
    • Addedstrata_order_challenge
    • Addedstrata_order_prepare
    • Addedstrata_order_status
    • Addedstrata_order_submit
  7. 3 tool updatesv0.1.2
    • First observedstrata_capabilities
    • First observedstrata_markets
    • First observedstrata_quote

TDQS

A3.9/5.0

Scored across 15 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    Enables 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.
    71
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables access to financial market data including EOD, intraday, fundamentals, news, and more via 75 read-only MCP tools.
    5
    MIT