Crank Protocol
Server Details
Non-custodial DeFi tools for AI agents on Solana: swaps, perps, lending, staking, equities.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
184 toolsapprove_proposalAInspect
Approve a pending PROPOSAL within its TTL, then re-dispatch it (non-custodial control plane).
Flips a propose-mode proposal (see set_permission_mode) from pending to
approved, then immediately re-invokes the original deferred tool call
(stored tool_name + params) through this same dispatch table. On
redispatch failure the proposal stays APPROVED (not silently EXECUTED or
PENDING) -- call this again to retry. See wallets.approve_proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| approved_by | No | ||
| proposal_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only providing readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false, the description goes far beyond by detailing the state transition (pending → approved → redispatch), the exact re-invocation mechanism (stored tool_name + params through the dispatch table), the failure semantics (stays APPROVED, not silently EXECUTED or PENDING), and retry guidance ('call this again to retry'). This richly complements the openWorldHint and aligns with the non-destructive annotation.
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 well-structured with purpose front-loaded, then mechanism, then failure/retry behavior, then a code reference. The final 'See wallets.approve_proposal' is a useful pointer. The middle sentence is long and packs several clauses, but each detail earns its place; it is dense rather than verbose.
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 complex stateful tool with an output schema, the description covers purpose, preconditions (pending proposal, propose-mode, TTL), mechanism, post-conditions, and error/retry semantics. The only gap is the unexplained caller_id/approved_by semantics, which ties back to parameter coverage.
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 compensate. It helps for proposal_id by establishing the approval targets a 'pending PROPOSAL,' but it is completely silent on caller_id and approved_by — both have empty-string defaults and ambiguous purpose. An agent cannot tell whether to populate them, leave them empty, or whether they are server-injected for attribution or signature.
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 specific verb+resource+context: 'Approve a pending PROPOSAL within its TTL, then re-dispatch it (non-custodial control plane).' This uniquely identifies what the tool does and distinguishes it from siblings like propose_allocation, propose_template_update, and set_permission_mode — the agent immediately understands this is the approval step in a proposal lifecycle.
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 clearly implies when to use this tool: when a proposal is in propose-mode ('see set_permission_mode') and pending, and it even explains when to call again on redispatch failure. It cross-references set_permission_mode as a precedent condition. However, it never explicitly states 'when NOT to use' or names a direct alternative for the same step, so guidance stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asset_classificationARead-onlyIdempotentInspect
Classify a token: crypto / equity / wrapped_major / lst / stablecoin.
Provide token_address (mint) or a known symbol. Tokenized securities (xStocks, Ondo) classify as 'equity', which subjects strategies to the SEC framework guardrails (neutral tools, per-execution confirmation for discretionary types). Registry-authoritative with a static + symbol fallback. Factual classification only -- not a recommendation.
Workflow: RISK/COMPLIANCE step -- classify before executing; 'equity' forces geo-gating + per-execution confirm. Pairs with get_disclaimers. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | ||
| caller_id | No | ||
| token_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. The description adds: 'Registry-authoritative with a static + symbol fallback' and 'Factual classification only—not a recommendation,' clarifying data sourcing and non-recommendation nature. Slightly lacks detail on response format, but output schema exists.
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 at ~6 lines, front-loaded with the classification purpose, and well-structured: categories, input, special cases, data source, workflow. Every sentence adds value without redundancy.
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's complexity (compliance implications), the description covers purpose, input, special behavior, workflow integration, and pairing. Output schema exists for return values, so no gap. Aids correct agent decision-making fully.
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%; description partially compensates by naming 'token_address (mint)' and 'symbol' and their usage. However, the third parameter 'caller_id' is not explained, leaving a gap. Adds value for two params but incomplete.
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 starts with a clear verb and resource: 'Classify a token' followed by the specific categories, distinguishing it from siblings like get_token_classification. It also details special cases (e.g., tokenized securities as equity), making purpose 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?
Explicitly states when to use—'RISK/COMPLIANCE step—classify before executing'—and consequences of 'equity' classification (geo-gating + confirm). Also pairs with get_disclaimers and references get_trading_workflow, providing complete usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authorize_session_signerAIdempotentInspect
Refuses ALWAYS with BROWSER_CONFIRMATION_REQUIRED.
Minting (or reactivating) a session signer grants NEW signing authority -- a trust grant at least as sensitive as loosening a policy, which is already browser-gated. This tool therefore refuses EVERY call, for EVERY wallet (not only Lane 2), after validating capabilities for early UX. The only mint path is the browser handshake: request_session_signer_authorization (open) -> the wallet OWNER approves in their browser -> poll_session_signer_authorization (bind the stored payload). signer_pubkey is a keypair the USER creates and holds -- ONLY its PUBLIC key ever crosses this surface (hard rule 1); once authorized via the handshake, calls carrying it are trade-only under tx_verify (docs/SESSION_SIGNER_DESIGN.md).
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| caller_id | No | ||
| expires_at | No | ||
| capabilities | No | ||
| signer_pubkey | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses surprising behavior: the tool always refuses, applies to every wallet, validates capabilities only for UX, and never lets anything but the public signer key cross the surface. It also explains the security rationale and the handshake requirement.
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 first sentence front-loads the most critical behavior, and every subsequent sentence adds relevant context: the reason for refusal, the alternative workflow, and the security rule. There is no filler or repeated schema 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?
The description is complete enough for an agent to avoid a doomed call and route to the browser handshake. Minor gaps remain around additional parameter details and the exact output/error payload, but the output schema and the always-refusal design reduce the need for more.
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 important meaning for signer_pubkey, explaining it is a user-held keypair and only its public key should cross the surface. However, schema description coverage is 0%, and other parameters such as expires_at, capabilities, label, and caller_id are left mostly to inference from their names.
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 an explicit behavioral statement: 'Refuses ALWAYS with BROWSER_CONFIRMATION_REQUIRED.' It clearly defines what the tool does, why it exists, and differentiates it from the actual authorization flow via request_session_signer_authorization and poll_session_signer_authorization.
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 explicitly tells the agent when not to use this tool by stating every call is refused and names the only valid mint path: the browser handshake sequence. This is strong when-to-use and when-not-to-use guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backtest_strategyARead-onlyIdempotentInspect
Backtest a strategy on historical Solana OHLCV before deploying capital.
strategy_type is one of the 17 Crank strategy types (dca, momentum,
rebalance, stoploss, protect, snipe, sentiment, vault, yield_farm, hedge,
equity_dca, perp_grid, copy_wallet, market_make, arb, basis_trade,
composite). asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d;
start_date/end_date are ISO-8601. params tunes the strategy (e.g.
{"fast":5,"slow":20} for momentum). For strategy_type="composite" pass the
signal-rule definition (see compose_strategy); the response includes a
per-stream signal_coverage honesty report -- streams with partial persisted
history are flagged, never silently zero-filled.
slippage_model: "fixed" (slippage_bps haircut) or "jupiter_replay" (realised
price-impact from the recorded quote corpus). Returns performance metrics
(Sharpe/Sortino/Calmar, max drawdown, win rate, profit factor, VaR/CVaR),
final equity, and trade + signal counts. Read-only simulation -- no fee, no
on-chain action.
Workflow: SIMULATE step -- validate a strategy on history before risking capital; run twice (e.g. auto vs long_only) to compare. Poor Sharpe/deep drawdown -> retune or fall back to the yield leg. Feeds get_risk_assessment -> the strategy_*_create tools. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| params | No | ||
| fee_bps | No | ||
| end_date | Yes | ||
| caller_id | No | ||
| timeframe | Yes | ||
| definition | No | ||
| start_date | Yes | ||
| slippage_bps | No | ||
| strategy_type | Yes | ||
| slippage_model | No | fixed | |
| wallet_address | No | ||
| initial_capital | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool is read-only, simulates with no fees or on-chain actions, and provides honesty reports for composite strategies. This adds value beyond the annotations (readOnlyHint, destructiveHint) by detailing specific behavioral traits.
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 well-structured with a clear purpose, parameter details, and workflow. It front-loads the main idea and contains useful examples. While slightly verbose in listing all 17 strategy types, it remains efficient overall.
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's complexity (13 parameters, output schema exists), the description covers return metrics, honesty reports, slippage models, and workflow. It provides sufficient context for the agent to use the tool correctly without needing the output schema details.
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 compensates by explaining most parameters (strategy_type, asset, timeframe, dates, params, slippage_model, etc.) and their defaults. However, a few parameters like caller_id and wallet_address are not detailed, leaving minor gaps.
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: backtesting a strategy on historical Solana OHLCV before deploying capital. It lists specific strategy types and differentiates this tool from siblings by positioning it as a simulation step.
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 explicit usage guidance: use before deploying capital, run twice for comparison, retune on poor Sharpe. It also references related tools (get_risk_assessment, strategy_*_create) and a workflow, giving clear when-to-use and fallback advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_inADestructiveInspect
Fund your Solana wallet from a major EVM chain (non-custodial).
Cross-chain FUNDING rail (deBridge DLN): builds an UNSIGNED EVM
transaction creating a bridge order that pays dst_token (a Solana
mint, e.g. USDC) to wallet_address. Sign and broadcast the returned
evm_transaction ({to, data, value}) with your OWN wallet
(evm_sender) on src_chain -- Crank never signs, never broadcasts
the EVM leg, and never holds funds in flight. amount is in source-token
base units. Supported source chains: ethereum, arbitrum, base, optimism,
polygon, bnb, avalanche, linea.
Fund from any major chain, execute on Solana: pair with jupiter_swap / strategies once the funds arrive (confirm with get_balances). Value-bearing (technology service fee via x402 past the daily free tier). Paper trading mode returns a simulated order with a real DLN quote.
idempotency_key (optional): retrying with the same key + args replays
the original order instead of creating a second one.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| caller_id | No | ||
| dst_token | Yes | ||
| src_chain | Yes | ||
| src_token | Yes | ||
| evm_sender | Yes | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond annotations: it states the tool is non-custodial, that Crank never signs or broadcasts the EVM leg, that funds are never held in flight, that the result is an unsigned evm_transaction to be broadcast by the user, and that idempotency_key replays the original order. This gives an agent an unusually clear 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?
The description is dense but well organized, front-loaded with purpose and process. It includes some repeat emphasis (never signs, never broadcasts, never holds funds in flight), but each sentence contributes actionable information and the length is reasonable for a complex bridge tool.
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 output schema exists, the description covers the most important operational facts: source chains, return shape, signing requirement, post-bridge workflow, fees, paper trading, and idempotency. It could still explain a few non-obvious params like pay_in_crank and caller_id, but an agent would be well equipped to call this tool 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?
Schema description coverage is 0%, so the description carries the burden. It meaningfully explains amount units, dst_token semantics, wallet_address, evm_sender, src_chain supported values, and idempotency_key. Some parameters like caller_id, pay_in_crank, and payment_header remain unexplained, which keeps this from being a 5.
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 action — funding a Solana wallet from a major EVM chain — and explains it does this by building an unsigned EVM bridge order. It names the resource types involved (dst_token, wallet_address, evm_sender) and differentiates itself from nearby sibling concepts like bridge_out or jupiter_swap.
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 gives clear context for when to use the tool: cross-chain funding from supported EVM chains into Solana, then pairing with jupiter_swap or strategies once funds arrive. It lacks an explicit when-not-to-use statement or named alternatives such as bridge_out, but the workflow guidance is strong enough to route a caller.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_outADestructiveInspect
Bridge value from Solana out to a major EVM chain (non-custodial).
Cross-chain FUNDING rail (deBridge DLN), jupiter_swap two-phase pattern:
without signed_transaction returns an UNSIGNED base64 Solana
transaction creating the bridge order -- sign it with the wallet for
wallet_address. With signed_transaction broadcasts the
caller-signed tx and returns tx_signature + a verification block
(gate follow-on decisions on verification.confirmed). src_token
is the Solana mint committed, amount its base units;
evm_recipient is YOUR address on dst_chain (ethereum, arbitrum,
base, optimism, polygon, bnb, avalanche, linea).
Value-bearing (technology service fee via x402 past the daily free tier;
charged once per order on the build leg, never re-charged on the
completion leg). Paper trading mode returns a simulated order with a real
DLN quote. idempotency_key (optional): reuse the SAME key across the
build call and its signed_transaction completion retry.
order_id (optional): pass back the build leg's returned
order_id on the signed_transaction completion call to reconcile both legs
into one BridgeTransfer row -- then poll fulfillment with
get_bridge_status(order_id).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| verify | No | ||
| order_id | No | ||
| caller_id | No | ||
| dst_chain | Yes | ||
| dst_token | Yes | ||
| src_token | Yes | ||
| pay_in_crank | No | ||
| evm_recipient | Yes | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations, disclosing the two-phase build/completion flow, the fee model ('charged once per order on the build leg, never re-charged on the completion leg'), paper trading behavior, idempotency semantics, and the reconciliation mechanism via order_id. It also flags that the unsigned transaction must be signed with the wallet for wallet_address. This gives an agent strong awareness of side effects and financial implications.
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 long but densely informative, with clear paragraph breaks for the two-phase flow, fees/paper trading, idempotency, and reconciliation. The main purpose is front-loaded, and most sentences add operational value. It could be slightly tightened, but the length is justified given the tool's complexity.
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 complex 13-parameter bridge tool, the description covers the overall workflow, signing requirement, fee behavior, and post-completion polling. The presence of an output schema reduces the need to describe return values. The main completeness gap is the set of undocumented parameters, especially dst_token, which prevents the description from being fully self-sufficient.
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 compensate. It provides meaningful semantics for several key parameters: src_token as the Solana mint, amount as base units, evm_recipient as the address on dst_chain, signed_transaction mode, idempotency_key, and order_id. However, it leaves important parameters unexplained, including the required dst_token, plus verify, caller_id, pay_in_crank, and payment_header, which are not self-evident from the schema alone.
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 specific verb and resource: 'Bridge value from Solana out to a major EVM chain (non-custodial).' This clearly distinguishes it from sibling bridge_in by direction and explicitly names target chains. The purpose is unambiguous and not a tautology.
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 concrete usage conditions: without signed_transaction it returns an unsigned transaction to sign, and with signed_transaction it broadcasts the tx and returns a verification block. It also routes follow-up polling to get_bridge_status(order_id), which helps an agent choose next steps. It does not explicitly state when to prefer bridge_out over bridge_in or other alternatives, but the directional framing makes the primary use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_send_socialADestructiveInspect
Distribute one token to many X handles in one call (non-custodial).
recipients is a list of {recipient_handle, amount, message?} dicts
(recipient accepted as an alias; amount in base units; message an
optional per-recipient note). Locks each amount of token (mint) from
sender_wallet into a fresh claim escrow and returns the create_claim
instructions batched into as few UNSIGNED transactions as fit -- the sender
signs + broadcasts every returned tx. Each send carries its crank.ing claim
link, the bearer claim_code (returned once, embed per tweet), and the
transaction_index of the tx that funds it. Anti-abuse gated (account age,
verified wallet, per-sender daily limit counting the whole batch). platform: x.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result (same
claim_codes/links) instead of locking a second batch of escrows.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| platform | No | x | |
| referral | No | ||
| caller_id | No | ||
| recipients | Yes | ||
| sender_wallet | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: it locks amounts into escrow, returns unsigned transactions for the sender to sign and broadcast, includes claim links and codes, and mentions anti-abuse gating. It also explains idempotency behavior. Annotations indicate destructiveHint=true and readOnlyHint=false, which align with the description's mutation and locking actions. 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 detailed but well-structured, with a clear opening sentence, then a breakdown of parameters and process. It's a bit long but each sentence adds value. The idempotency explanation is placed at the end, which is appropriate. No fluff.
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's complexity (batch sends, escrow, unsigned transactions, idempotency), the description covers the essential aspects. It mentions the output includes claim links, codes, and transaction indices, and there is an output schema. It doesn't detail the exact output structure, but the output schema likely covers that. It also mentions anti-abuse gating, which is important context.
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 compensate. It explains 'recipients' as a list of dicts with fields (recipient_handle, amount, message?), mentions 'recipient' alias, 'amount' in base units, and 'message' as optional. It also explains 'token' as mint, 'sender_wallet', and 'idempotency_key' with its retry behavior. This adds significant meaning beyond the bare 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 clearly states the tool's purpose: 'Distribute one token to many X handles in one call (non-custodial).' It specifies the action (distribute), the resource (token to X handles), and the mode (non-custodial). It distinguishes itself from the sibling 'send_token_social' by emphasizing batch distribution and the claim escrow mechanism.
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: for batch distribution to many handles, with details on the recipients structure and the process. It doesn't explicitly state when NOT to use it or name alternatives, but the batch vs. single distinction is implied. It also mentions anti-abuse gating, which helps the agent understand constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_perp_orderADestructiveInspect
Cancel a resting perp order on its venue (non-custodial).
jurisdiction: cancel is geo-gated too --
see place_perp_order.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-cancelling the order. Reuse the SAME key across the build call and
its signed_transaction completion call -- see
place_perp_order; the two legs dedupe independently, so this never raises
IDEMPOTENCY_CONFLICT.
signed_transaction / verify (two-phase execution):
see place_perp_order. A cancel moves no position, so confirming the
signature landed IS the verification -- no state re-read is declared.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| venue | No | ||
| verify | No | ||
| order_id | Yes | ||
| caller_id | No | ||
| jurisdiction | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| acknowledge_tier_b | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructive/read/write traits. The description goes far beyond that by disclosing the non-custodial venue behavior, geo-gating of cancels, optional idempotency replay semantics, the promise that the two leg bugs never raise IDEMPOTENCY_CONFLICT, and the two-phase execution semantics. It also explains isverification enough because cancel moves no position, so no state re-read is required.
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 front-loaded with its purpose and then uses compact parameter-focused paragraphs for the nuanced fields. The content is dense and mostly justified, though the repeated 'see place_perp_order' references and the lengthy idempotency paragraph could be tightened without losing 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 10-para, destructive perp API with an output schema, the description covers the most safety and execution-critical behaviors: non-custodial, geo-gated cancellation, idempotency, and two-phase execution. The main gaps are practical meaning of the remaining optional parameters and the reliance on cross-references to place_perp_order for necessary details.
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 the description compensates for only some parameters: 'jurisdiction' (geo-gating), 'idempOTency_key' (replay rules, reuse across legs, no conflict), and 'signed_transaction'/'verify' (two-phase semantics). It leaves 'wallet_address', 'order_id', 'venue', 'ip', 'caller_id', and 'acknowledge_tier_b' without any behavioral or formatting explanation, which matters given the schema has no parameter descriptions.
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 line 'Cancel a resting perp order on its venue (non-custodial)' states a specific verb, resource, and scope. It clearly distinguishes cancelling a resting order from position-closing tools like close_perp_position or perp_close, and 'resting order' narrows it from order placement.
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 strong execution context but no explicit when-to-use/when-not guidance against alternatives such as close_perp_position, strategy_cancel, or place_perp_order. The repeated 'see place_perp_order' references explain semantics but do not tell an agent what alternatives exist or when to choose them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_claim_statusARead-onlyIdempotentInspect
Sender-facing claim status of a social send (FREE read).
Look up by claim_id (the send id) OR recipient (X handle); optionally
scope a recipient lookup to one sender_wallet. Returns {"sends": [...]}
each with status (pending/claimed/expired/returned), claim_date, returned_at,
recipient_wallet, amount, claim_link, expiry_ts, and expires_in_seconds (a live
countdown, 0 once expired). Never exposes the claim-code secret.
| Name | Required | Description | Default |
|---|---|---|---|
| claim_id | No | ||
| caller_id | No | ||
| recipient | No | ||
| sender_wallet | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds valuable behavioral traits beyond these: it returns a specific JSON structure with a live countdown (expires_in_seconds), lists the statuses, and explicitly states it never exposes the claim-code secret. This adds contextual detail beyond what annotations provide.
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 and well-structured. The first sentence states the purpose, followed by lookup methods, then the output fields. It front-loads the key information and avoids unnecessary fluff. The second sentence is a bit dense but organized as a list of fields, making it easy to scan.
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's simplicity, the annotations covering safety, and the existence of an output schema, the description is sufficiently complete. It tells the agent how to look up status (by claim_id or recipient), what fields to expect, and includes a security note. The only gap is the undocumented caller_id parameter, but this is minor given the tool's overall clarity.
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 parameter meanings. It explains claim_id as 'the send id', recipient as 'X handle', and sender_wallet as scoping for a recipient lookup. However, it does not explain caller_id at all, leaving one of four parameters undocumented. The description partially compensates but is not complete.
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: 'Sender-facing claim status of a social send (FREE read).' It names the specific resource (social send) and the operation (check claim status), and differentiates from siblings by specifying the lookup methods (claim_id or recipient) and the output fields. It also adds a security constraint (never exposes claim-code secret), making it 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 clear context for when to use the tool: it is sender-facing and a free read, suitable for looking up claim status. It explains the two primary lookup methods (claim_id or recipient) and optional scoping by sender_wallet. However, it does not explicitly mention alternatives or when not to use it vs. sibling tools like claim_status or get_social_sends, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_ilo_tokensADestructiveInspect
Claim the launch tokens your liquidity release schedule has unlocked.
Returns an UNSIGNED release_tokens transaction (action: "sign_required") you sign with your own wallet and broadcast yourself.
Crank NEVER co-signs a claim -- there is no backend signing path here by
design (hard rule 1).
When nothing has unlocked yet -- before the cliff, or everything unlocked
has already been released, or the launch has not succeeded -- this returns
action: "nothing_to_claim" with the schedule and a
next_release_check_ts, rather than a transaction the chain would
reject. Free: a claim of your own allocation carries no technology service
fee.
Workflow: SETTLE step -- poll get_my_pledge_status, claim when
release.releasable_base_units is non-zero.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| launch_id | Yes | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| pledger_token_account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses crucial behavior beyond annotations: there is no backend signing path and 'Crank NEVER co-signs a claim', the returned transaction must be signed by the caller, and the tool returns a no-op result when nothing is claimable. It also explains that claims are free of technology service fees. This is consistent with the idempotentHint=false, destructiveHint=true, and readOnlyHint, 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 well structured and dense: each block adds distinct value—the claim action, the unsigned-transaction behavior, the the nothing-to-claim branch, the fee policy, and the workflow. There is no redundant prose or vague 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 description very thoroughly covers behavior, edge cases, fee, and workflow, and the output schema can carry the return details. It loses slightly on contextual completeness only because parameter roles are not explained for a multi-parameter mutation tool with 0% schema coverage.
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 input schema has 5 parameters with 0% schema description coverage, and the description does not explain the required parameters like launch_id and wallet_address, nor optional ones like idempotency_key or pledger_token_account. It only generically mentions 'your own wallet' and 'your own allocation', which is too thin to properly disambiguate the 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 opens with a specific verb and resource: 'Claim the launch tokens your liquidity release schedule has unlocked.' It clearly distinguishes itself from status-check siblings by describing the action and the two action-response forms: sign_required and nothing_to_claim.
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 an explicit workflow: 'poll get_my_pledge_status, claim when release.releasable_base_units is non-zero' and names the relevant sibling tool. It also clearly states the 'when not to claim' conditions by explaining when the tool returns nothing_to_claim instead of a transaction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_statusBRead-onlyIdempotentInspect
Public status of a crank.ing claim code (status, amount, claimable, expiry).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) already declare a safe read operation. The description adds value by listing the returned fields (status, amount, claimable, expiry), but no additional behavioral traits are disclosed.
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 sentence that efficiently conveys the tool's purpose and output fields. No redundant 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?
Given the presence of annotations and an output schema, the description covers the basic functionality. However, missing details about error conditions or input format reduce completeness for a simple tool.
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 has 0% description coverage for parameters. The description only mentions 'claim code' in context, failing to explain the purpose of 'caller_id' parameter or any constraints on 'code' format.
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 retrieves the public status of a crank.ing claim code, listing specific fields (status, amount, claimable, expiry). However, it does not differentiate from sibling tool 'check_claim_status', which may cause confusion.
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 vs alternatives, such as 'check_claim_status'. The description lacks context for selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_agnta_grantAIdempotentInspect
Remove a wallet's AGNTA DelegationGrant cap opt-in (non-custodial control plane).
LOOSENS enforcement (removes a cap constraining every value-bearing call on top of WalletPolicy) -- for a Lane 2 wallet this raises BROWSER_CONFIRMATION_REQUIRED: call request_agnta_grant_clear instead and have the user approve it in their own browser. A non-Lane-2 wallet clears directly.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint false, idempotentHint true), the description explains the effect: 'LOOSENS enforcement (removes a cap constraining every value-bearing call)' and clarifies the Lane-2 behavior. It doesn't fully specify return values, but the output schema exists, so that's not required.
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 informative but somewhat verbose and run-on. It includes nested clauses and awkward capitalization (e.g., 'LOOSENS enforcement...'). It could be condensed into clearer sentences without losing meaning.
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's complexity, the description covers the key context: the effect on enforcement, the Lane-2 exception, and the recommended alternative. It doesn't mention prerequisites or edge cases, but the presence of an output schema mitigates the need for return details.
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 input schema lists 'caller_id' and 'wallet_address' with no descriptions, and the tool description does not explain either parameter. The wallet_address is implied by the context, but caller_id's role is unclear. The description adds no parameter semantics beyond the names, and schema coverage is 0%.
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: 'Remove a wallet's AGNTA DelegationGrant cap opt-in' and specifies the resource (wallet's cap). It differentiates from the sibling 'set_agnta_grant' and conditionally from 'request_agnta_grant_clear', making the purpose 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?
Explicitly provides when to use this tool vs. the alternative: 'for a Lane 2 wallet this raises BROWSER_CONFIRMATION_REQUIRED: call request_agnta_grant_clear instead' and states 'A non-Lane-2 wallet clears directly.' This gives clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_strategyAInspect
Clone a published strategy config to a wallet (records attribution).
Returns the config_template to deploy via the strategy create tools. The clone is attributed to the template author for the clone-creator fee share (15% of the tech fee on clone actions). Free to clone.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| template_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already marking this as non-read-only and non-destructive, the description adds useful behavioral context: the action is free, records attribution, incurs a 15% clone-creator fee share, and returns a deployable template rather than performing deployment itself. These are beyond the schema but consistent 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 compact sentences front-load the action and then add only high-value workflow and cost details. Every clause earns its place; no redundant 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?
For a mutate-style tool with an existing output schema and annotations, the description covers the core behavior, cost, attribution, and the follow-up action (strategy create tools). It is slightly incomplete only in parameter-level detail and explicit sibling differentiation.
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 opening sentence maps template_id to the published strategy config and wallet_address to the destination wallet, which covers the required parameters. However, the description does not explain caller_id at all, and with 0% schema coverage the agent must infer type/format for the core 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?
Sentence one states a specific verb+object: 'Clone a published strategy config to a wallet' and adds the attribution nuance. It distinguishes the tool's role from the sibling strategy create tools by noting the returned config_template is meant for subsequent deployment.
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 frames the intended workflow: clone a published config, receive a config_template, then deploy via strategy create tools. This clearly signals when to use the tool, though it does not explicitly enumerate alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_perp_positionADestructiveInspect
Close a perp position (full/partial) on its venue (non-custodial).
position_id is venue-native (for Drift it is the market symbol). close_pct in (0, 100]. Returns an UNSIGNED tx / signing payload to sign + broadcast.
jurisdiction: closes are geo-gated too --
see place_perp_order.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-closing the position. Reuse the SAME key across the build call and
its signed_transaction completion call -- see
place_perp_order; the two legs dedupe independently, so this never raises
IDEMPOTENCY_CONFLICT.
signed_transaction / verify (two-phase execution):
see place_perp_order -- re-call with the signed payload and Crank relays it
by custody tier and verifies the result.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| venue | No | ||
| verify | No | ||
| caller_id | No | ||
| close_pct | No | ||
| position_id | Yes | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| acknowledge_tier_b | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite destructiveHint and non-idempotent annotations, the description adds substantial behavioral context beyond them: it explicitly says the tool returns an UNSIGNED transaction/payload, closes are geo-gated, the two-phase signed_transaction flow is supported, and idempotency_key replays the original result. This greatly helps the agent understand side effects and execution phases.
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 organized with parameter-scoped notes and front-loads the core purpose before getting into idempotency and two-phase execution. It is somewhat long and repeats the place_perp_order reference multiple times, but each sentence contributes behavioral or safety-relevant 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?
The tool is complex (13 parameters) and the schema descriptions are absent, so the description carries a heavy burden. It covers the behavioral flow well, but leaves several defaulted and non-defaulted parameters unexplained and relies heavily on a sibling tool for crucial two-phase execution details. An output schema exists, but input semantics for parameters like wallet_address and pay_in_crank remain incomplete.
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 tool description must carry the parameter meaning; it does a good job for close_pct, position_id, jurisdiction, idempotency_key, verify, and signed_transaction. However, important parameters such as wallet_address, venue, pay_in_crank, payment_header, and acknowledge_tier_b receive no meaningful explanation, and the description defers a fair amount to place_perp_order rather than being self-contained.
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 ('Close a perp position'), the resource, and the full/partial scope, and it adds important context about non-custodial venue settlement and unsigned signing payloads. It does not explicitly distinguish itself from close-related siblings such as perp_close, so it falls just short of full 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?
The description explains mechanics like idempotency, jurisdiction, and two-phase execution, but it does not state when to choose this tool versus alternatives such as perp_close, cancel_perp_order, or perp_modify. It also does not mention when not to use the tool, aside from implicitly being for closing perp positions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_strategyARead-onlyIdempotentInspect
Validate a composite definition -- returns the normalised definition + validation report. No persist; read = FREE per the fee schedule.
Checks: schema, stream existence against the signal catalog, rule-tree depth/size limits, required risk caps, and the anti-gaming rule (a social sentiment/trend_social stream may never be the sole entry trigger).
| Name | Required | Description | Default |
|---|---|---|---|
| definition | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, establishing safe read-only behavior. The description adds value by confirming 'No persist; read = FREE per the fee schedule' and detailing the validation checks. It also mentions the return of a normalized definition and validation report, providing extra context 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 extremely concise: two sentences and a bullet list, with no redundant words. It front-loads the core purpose and key details, making it easy for an agent to quickly 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?
Given the tool's complexity (one free-form object parameter), the description covers the essential purpose, behavioral traits, and validation checks. The output schema likely handles return value specifics. It omits details like output format or error handling, but the mention of 'validation report' and existing output schema mitigate this. A mention of example usage context would strengthen it further.
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 input schema has 0% description coverage, meaning the single parameter 'definition' is completely undocumented in the schema. The description partially compensates by listing what the tool checks (schema, stream existence, rule-tree limits, risk caps, anti-gaming), implying required aspects of the definition. However, it still lacks explicit structure or required properties for the definition object, leaving ambiguity.
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 verb 'Validate' and the resource 'composite definition'. It specifically says it returns a normalized definition and validation report, and distinguishes itself from sibling creation tools by explicitly stating 'No persist'.
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 context on when to use this tool: to validate a composite definition before creation. It enumerates specific checks (schema, stream existence, rule-tree limits, risk caps, anti-gaming rule), which helps the agent understand its applicability. However, it lacks explicit exclusions or alternatives, such as noting that this should be used prior to strategy_composite_create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_agent_walletAInspect
Register an agent wallet the caller controls (non-custodial control plane).
Creates an AgentWallet record keyed by agent_id and applies an optional default policy preset. default_policies: conservative | balanced | aggressive. wallet_address is the agent's PUBLIC key (caller-supplied); omit it to create a pending record the Turnkey provisioning ticket fills in. Returns wallet_address, agent_id, status, and the applied_policies.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| caller_id | No | ||
| display_name | No | ||
| owner_address | No | ||
| wallet_address | No | ||
| default_policies | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds valuable behavior beyond that: it creates a record, optionally applies policy presets, and can create a pending record for a Turnkey provisioning ticket to fill. It also discloses the return fields, which is useful context. No contradictions 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?
The description is concise and well-structured: first sentence states the core purpose, second explains how the record is created and key parameters, third lists return values. Every sentence adds value with no fluff, and it is front-loaded with the most important 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 tool with 6 parameters and an output schema, the description covers the core mechanics (keyed by agent_id, policy presets, pending record flow) and return values. It does not explicitly explain how this relates to sibling lifecycle tools like enable_agent_wallet, but the context provided is sufficient for most use cases.
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. It does explain the semantics of default_policies (conservative | balanced | aggressive) and wallet_address (public key, optional, pending record behavior). However, it does not clarify agent_id, caller_id, display_name, or owner_address, leaving half the parameters under-explained.
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 begins with 'Register an agent wallet the caller controls (non-custodial control plane)', which is a specific verb+resource statement. It clearly distinguishes this from sibling tools like enable_agent_wallet, kill_wallet, and wallet_status by focusing on registration and creating an AgentWallet record keyed by agent_id.
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 for when to use the tool — registering an agent wallet in a non-custodial control plane. It explains conditional usage (omit wallet_address for pending records) but does not explicitly name alternatives or exclusion criteria relative to sibling wallet tools, so it stops slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_execution_intentADestructiveInspect
Create a propose-only execution intent; returns an approval URL to hand to the user.
Lane 1 (non-custodial default): builds the unsigned swap transaction server-side, persists it as an intent, and returns {intent_id, approval_url}. NOTHING executes until the user opens the approval URL in their browser and signs with their own wallet. This tool never signs and never sees a key. amount is in input-token base units. The quote includes the technology service fee. After the user approves, poll get_intent_status and report ONLY the persisted on-chain state (CONFIRMED before any success claim).
FEE PARITY (follow-up to ):
the on-chain technology service fee baked into the unsigned tx is now
resolved through the SAME discount-aware pipeline as jupiter_swap
-- the tokenized-security classification is resolved ONCE here via
the authoritative registry-backed classifier (parity with
jupiter_swap's call site) and, together with pay_in_crank,
determines the quoted platformFeeBps. Without this an intent
proposed via this Lane 1 rail could be fee-classified differently
from the identical swap executed via jupiter_swap. Decision:
pay_in_crank IS exposed here (not just is_security) -- the
fee rate is a quote-time input baked into the unsigned tx before the
user ever reaches the approve page, so an agent must be able to
request the pay-in-$CRANK discount at proposal time, same as it can
on the direct swap path.
GEO GATE: when either leg is a tokenized
security this call is geo-gated (Reg S = no US persons) and
OFAC-screened, same control jupiter_swap/trade_equity
enforce -- jurisdiction declares the caller's jurisdiction once,
ip is the caller's origin IP for the Reg-S IP layer.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| amount | Yes | ||
| caller_id | No | ||
| input_token | Yes | ||
| jurisdiction | No | ||
| output_token | Yes | ||
| pay_in_crank | No | ||
| slippage_bps | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=true, not idempotent, openWorld=true) are dramatically enriched by text explaining the timing and locus of side effects: 'NOTHING executes until the user opens the approval URL and signs', 'never signs and never sees a key', the distinction between proposing an intent (this tool) and executing (user action), fee-quote-baked-into-tx semantics, and the Reg S/OFAC compliance layer for security tokens. This converts a terse 'destructive + not idempotent' annotation into an actionable mental 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?
The definition is genuinely front-loaded (the single most important fact — propose-only, user approval required — is first), and the return shape {intent_id, approval_url} is repeated for emphasis. However, at ~400 words it is long, and the FEE PARITY paragraph is bloated with internal design reasoning ('Decision: pay_in_crank IS exposed here...') and rationale ('Without this an intent proposed via this Lane 1 rail could be fee-classified differently') that an agent doesn't need to invoke the tool. There's also an empty link '(follow-up to )' and the return value is described twice. The meaningful info could be cut in half.
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 tool with 0% schema coverage and full behavioral annotations, the description covers the most safety-critical aspects: keys are never touched, nothing executes without user signature, fee parity is guaranteed, geo/OFAC gating applies, and amount units are pinned down. But it omits several agent-relevant behaviors: what happens on slippage/who passes validator keys, retry semantics for a non-idempotent call (the existence of idempotency_key is mentioned nowhere), and whether wallet_address must be pre-verified. The description is rich where it matters for compliance and safety, but thin on the operational edge cases an agent would hit when actually retrying or recovering.
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 coverage and 11 parameters, the description carries the full documentation burden and only partially delivers. It explicitly documents amount ('in input-token base units'), implicitly documents pay_in_crank (quoted via the discount-aware classifier pipeline), jurisdiction (declared once for Reg S), and ip (origin for the identity-proof layer). But slippage_bps semantics on an unsigned proposal, allow_unverified behavior, idempotency_key semantics on a non-idempotent call, wallet_address binding, and the two token params are entirely undocumented.
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 line 'Create a propose-only execution intent; returns an approval URL to hand to the user' pairs a specific verb with a clear resource and a distinctive behavioral qualifier ('propose-only') that separates this from a direct execution tool. The 'Lane 1 (non-custodial default)' framing further clarifies scope. It doesn't earn a 5 because it never names a sibling to differentiate from (e.g., jupiter_swap for direct execution), so an agent must infer the exact nature of the alternative path.
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?
Provides explicit follow-up guidance — 'poll get_intent_status and report ONLY the persisted on-chain state (CONFIRMED before any success claim)' — which is a clear directive on how to chain this tool with its sibling. The Geo Gate section tells agents which control applies ('same control jupiter_swap/trade_equity enforce') and the non-custodial framing implies the correct invocation context. However, it never explicitly says 'use X instead when you need direct (custodial) execution,' so the when-NOT-to call decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
declare_jurisdictionAIdempotentInspect
Declare your wallet's jurisdiction for geo-gated trading.
Gap: before this tool, the ONLY way to declare a
jurisdiction was the jurisdiction= param on trade_equity -- an
agent that only ever used perps/short/leverage tools had no write path at
all, and the fail-safe unknown-jurisdiction-DENIED rule permanently
refused it. Call this ONCE (or pass jurisdiction= directly on any
perps/short/leverage/trade_equity tool) and the declaration is remembered
for 90 days across EVERY geo-gated framework (tokenized equities under
Reg S, perps/synthetic-shorting/leverage under the CFTC posture).
jurisdiction is an ISO-3166-1 alpha-2 country code (e.g. "US", "GB",
"SG") -- YOUR OWN self-declaration of where you are, never advice or a
recommendation (hard rules 2/5-8). A US-person declaration does not
unblock US-restricted venues; it makes the DENIED reason explicit rather
than "jurisdiction_unknown". Re-declaring overwrites the prior value.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| caller_id | No | ||
| jurisdiction | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses key behavioral traits: the declaration is 'remembered for 90 days,' 'Re-declaring overwrites the prior value,' and it changes behavior from a permanent unknown-jurisdiction DENIED to an explicit reason. It also clarifies that this is a self-declaration, never advice, which is meaningful for a regulatory tool.
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 longer than average but each sentence carries operational or regulatory substance, and the core action is front-loaded in the first line. The 'Gap:' paragraph is slightly verbose but explains a genuine integration nuance worth preserving.
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 regulatory complexity and the presence of an output schema, the description covers all needed context: when to call, persistence, cross-framework scope, limitations of a US-person declaration, and overwrite behavior. Nothing critical is missing for an agent to invoke the tool 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 0% schema description coverage, the description carries the parameter-semantics burden and does so well for jurisdiction: 'ISO-3166-1 alpha-2 country code,' self-declaration, and its legal effect. However, wallet_address, ip, and caller_id receive no explicit semantic explanation, though the first is inferable from the tool name and the others are optional metadata.
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 precise verb-resource pair: 'Declare your wallet's jurisdiction for geo-gated trading.' It also distinguishes the tool from siblings by explicitly naming trade_equity's jurisdiction param and the perps/short/leverage tools, so an agent can tell what this tool is and what it is not.
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 explicit when-to-use guidance: 'Call this ONCE (or pass jurisdiction= directly on any perps/short/leverage/trade_equity tool)' and explains the 90-day persistence. It also sets boundaries, noting that a US-person declaration does not unblock US-restricted venues, which prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookBInspect
Delete one of a wallet's webhook subscriptions (free control-plane write).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| webhook_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) and openWorldHint=true. Description adds 'free control-plane write' but fails to disclose side effects, reversibility, or error states. For a destructive action, more context is expected beyond 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?
Extremely concise (one phrase). It is front-loaded with the action, but lacks structure and depth. The brevity sacrifices useful details without achieving meaningful conciseness.
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 has 3 parameters and an output schema, but the description provides minimal context. It does not address required parameters, error handling, or success behavior. The existence of an output schema reduces the need for return value explanation, but the description still needs to cover usage prerequisites and typical outcomes.
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 should explain parameter meanings. It does not mention wallet_address, webhook_id, or caller_id. While parameter names are somewhat intuitive, format or constraints are omitted.
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?
Description clearly states action (delete), resource (webhook subscriptions), and scope (one of a wallet's). It distinguishes from siblings like register_webhook and list_webhooks, providing a specific verb+resource combination.
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 phrase 'free control-plane write' hints at low cost but does not explicitly state when to use this tool versus alternatives like register_webhook or list_webhooks. No guidance on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_regimeARead-onlyIdempotentInspect
Detect the current market regime for a Solana asset (read-only, deterministic).
Classifies the latest candle of recent OHLCV as bull / bear / range / volatile and returns a RegimeSignal: regime, confidence, trend_strength, volatility_percentile, a SUGGESTED direction (long/short/neutral) and position-size fraction (0-1), plus the raw ADX / +DI / -DI / SMA-slope / volume readings for transparency. asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d. A description + suggestion only -- not financial advice, not a trade instruction (DYOR). No wallet, no fee, no on-chain action.
Workflow: INTELLIGENCE step -- pair with get_market_briefing (macro) + get_ml_signal (forecast); feeds strategy choice + direction_mode at backtest + create time. bear + allow_short -> consider a short. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| caller_id | No | ||
| timeframe | No | 1h | |
| lookback_candles | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by explaining that the tool is deterministic, returns raw indicator values for transparency, and makes no on-chain actions or fees. It also includes an explicit disclaimer that it provides "a suggestion only -- not financial advice, not a trade instruction (DYOR)." These details add behavioral context not captured in the readOnlyHint/idempotentHint/destructiveHint annotations, giving the agent a clear picture of the tool's side-effect profile.
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 longer than average but every sentence adds value: it front-loads the core purpose, succinctly explains the output and parameters, notes limitations, and gives workflow context. It is well-structured with clear paragraphs and no filler. The length is justified by the tool's complexity and the need to disclaim financial advice.
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 is remarkably complete given the tool's complexity. It covers the input (asset and timeframe), the output (RegimeSignal fields and raw readings), the operational context (INTELLIGENCE step, pairing with other tools), and the boundaries (read-only, no on-chain action). Since an output schema exists, the description need not repeat return types, but it still provides enough detail to use the tool 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 schema_description_coverage at 0%, the description must compensate for missing parameter details. It explains that "asset is a token mint" and lists valid timeframe values ("1m/5m/15m/1h/4h/1d"), which adds meaning beyond the bare schema types. However, it does not describe lookback_candles or caller_id at all. Since half of the parameters are undocumented in the description, the compensation is incomplete, resulting in a mid-range score.
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 with a specific verb and resource: "Detect the current market regime for a Solana asset." It also distinguishes itself from similar tools by detailing its unique output (RegimeSignal, ADX, +DI/-DI, etc.) and by referencing sibling tools like get_market_briefing and get_ml_signal as complementary, not replacements. The read-only and deterministic nature is also highlighted.
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 explicit workflow guidance: "pair with get_market_briefing (macro) + get_ml_signal (forecast)" and states that it feeds strategy choice and direction_mode. It also gives a concrete usage example: "bear + allow_short -> consider a short." It clearly positions itself within the INTELLIGENCE step and even references get_trading_workflow for further context, making when to use this tool unambiguous relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_agentsARead-onlyIdempotentInspect
Find registered agents, optionally filtered to one capability.
capability one of swap|perps|lending|staking|strategies|signals|equity|onramp (empty = all). Ranked by reputation then recency. Read-only, free.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No | ||
| capability | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Matches annotations (read-only, idempotent) and adds 'free' and ranking details. Does not contradict 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?
Very concise (3 lines), front-loads purpose, and well-structured without unnecessary 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?
Covers purpose, filtering, ranking, and read-only nature. Has output schema and rich annotations, so missing param explanations for limit and caller_id are minor gaps.
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%, but description only explains the capability parameter with a list of values. No details on limit or caller_id, insufficient compensation for low coverage.
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 'Find registered agents, optionally filtered to one capability,' with a specific verb and resource. It lists valid capabilities and distinguishes this from sibling tools like discover_strategies.
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?
Provides explicit context on filtering (capability list, empty = all) and ranking (by reputation then recency). Lacks explicit when-not or alternatives but is adequate for agent discovery context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_strategiesARead-onlyIdempotentInspect
Browse published strategies (read-only, free). Crypto-only.
strategy_type filters to one of the 16 Crank strategy types (empty = all). sort ranks by clones|sharpe|return|sortino|win_rate|drawdown (default clones). detail="concise" (default) trims each entry to template_id/strategy_type/ name/clone_count/is_verified/backtest_hash (template_id is the ID to chain into clone_strategy); "full" adds description/config_template/ performance_summary/eligibility/author_wallet/created_at.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | clones | |
| limit | No | ||
| detail | No | concise | |
| caller_id | No | ||
| strategy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description adds genuinely useful behavioral context beyond that: the tool is free, crypto-only, and the detail parameter changes the shape of each returned entry. It does not mention rate limits or pagination, but this is not critical given the annotation coverage.
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?
Every sentence earns its place and the description packs filtering, ordering, default behavior, and output-shape semantics into a compact, structured format. It is information-dense without being bloated.
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 essential decision factors: scope, cost, platform limitation, filter semantics, sort semantics, and output shape. The output schema is also present, so return-value documentation is largely handled elsewhere. Minor omissions like limit bounds and caller_id semantics are not critical for a read-only browse tool.
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 schema has no inline descriptions (0% coverage), so the description carries nearly the entire burden. It meaningfully explains strategy_type, sort, and detail, including allowed values and default behavior. However, limit and caller_id are not covered, even though limit's purpose is fairly inferable from its name.
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 specific verb and resource combination, 'Browse published strategies', and immediately distinguishes the operation as read-only, free, and crypto-only. It also explains how the returned template_id feeds into clone_strategy, which separates it from other strategy-related siblings.
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 clearly frames the tool as a read-only strategy browsing utility and gives the selection conditions for filtering and sort modes. It also points forward to clone_strategy for the next step, but it does not explicitly say when to prefer this tool over strategy_list, get_strategy_leaderboard, or get_strategy_suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_agent_walletAInspect
Open the browser-confirmation handshake for a Lane 2 agent wallet.
Does NOT create a wallet. Returns a pairing-style confirmation URL + device_code -- show the user verification_url_complete and ask them to approve it in their OWN browser (wallet-signature gated). NEVER accept an in-chat "yes" as consent (CRANK_PLUGIN_SPEC.md section 5). Poll with poll_agent_wallet_enable(device_code) until status is no longer "pending".
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| caller_id | No | ||
| display_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide basic hints (readOnly false, openWorld true), but the description adds critical behavioral context: returns a pairing URL + device_code, requires wallet-signature gated approval in the user's own browser, forbids accepting in-chat consent, and references a spec section. These details go well beyond annotations and disclose the sensitive confirmation workflow.
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 three sentences, front-loaded with the primary action. It then packs essential safety and next-step information without redundancy. Every sentence earns its place, making it efficient and well-structured.
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?
An output schema exists, so return values are handled externally. The description covers the workflow (open handshake, show URL, require user approval, poll until done) and safety constraints. The only notable gap is the missing explanation of optional parameters (caller_id, display_name), which prevents full 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?
Schema description coverage is 0% (no parameter descriptions). The description does not explain the three input parameters: agent_id, caller_id, and display_name. While agent_id is inferable as the target wallet, caller_id and display_name remain ambiguous, forcing the agent to guess their purpose. The description fails to compensate for the schema's lack of parameter documentation.
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: 'Open the browser-confirmation handshake for a Lane 2 agent wallet.' It explicitly differentiates from related tools by saying 'Does NOT create a wallet,' and specifies the output (pairing-style confirmation URL + device_code). This is a specific verb+resource with clear sibling distinction.
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 explicit when-to-use guidance: it's for enabling an agent wallet via browser confirmation, not for creation. It instructs to poll with poll_agent_wallet_enable(device_code) until status changes, and provides strong constraints (ask user to approve in their own browser, never accept in-chat 'yes'). This is actionable and contrasts with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equity_corporate_eventsARead-onlyIdempotentInspect
Earnings / dividend / split calendar for a tokenized equity.
Read-only. The after-hours-agent feature: events an overnight strategy reacts to while the underlying trades 24/7 on Solana. Provider-backed; returns an honest empty payload + SEC EDGAR link when no feed is configured.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool is provider-backed and returns an honest empty payload with an SEC EDGAR link when no feed is configured, which is valuable behavioral context beyond 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 three concise sentences with no wasted words. The core purpose is front-loaded in the first sentence, making it immediately clear.
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 existence of an output schema and annotations, the description adequately covers the tool's behavior, including the empty payload case. It mentions tokenized equity and the Solana context, though it omits details on calendar field contents, which may be in the output schema.
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 description coverage at 0%, the description must compensate for the two parameters (symbol, caller_id) but provides no explanation of their meaning or usage. The schema alone does not clarify purpose.
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 provides an earnings/dividend/split calendar for a tokenized equity, with a specific verb+resource. It distinguishes itself from siblings like equity_quote and equity_positions by focusing on corporate events.
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 overnight strategies via the 'after-hours-agent feature' but does not explicitly state when to use this tool over alternatives or when not to use it. No exclusions or comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equity_market_hoursBRead-onlyIdempotentInspect
NYSE session status + the 24/7-on-Solana availability flag.
Read-only. status: closed | pre_market | open | after_hours, with next open/close. Highlights the structural advantage: tokenized equities trade 24/7 on-chain regardless of NYSE hours.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds that it returns next open/close times and highlights the 24/7 trading advantage, which provides useful behavioral context 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 brief at two sentences, but the final sentence about structural advantage is promotional and adds no technical guidance. It could be trimmed to only 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?
While the description covers the output status values and next open/close behavior, it does not explain how the symbol parameter affects the results or how the availability flag is represented. Given the existence of an output schema, the description is moderately complete but has gaps.
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%, meaning no parameter descriptions in the input schema. The tool description does not mention the parameters (symbol, caller_id) or explain their role, failing to compensate for the schema's lack of detail.
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 provides NYSE session status and a 24/7-on-Solana availability flag. It lists possible status values (closed, pre_market, open, after_hours) and mentions next open/close times, making the purpose specific and actionable.
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 on when to use this tool versus siblings like equity_markets. The description does not specify when not to use it or which alternative might be better for related needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equity_marketsARead-onlyIdempotentInspect
List available tokenized equities with issuer, regime, price, market hours.
Read-only. Source: the admin-editable TokenRegistry. Each row carries issuer (xStocks/Ondo), regulatory_framework, geo_restrictions, and best-effort price/volume/market-cap, plus NYSE status + the 24/7-on-Solana flag.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds valuable context: source (admin-editable TokenRegistry), data quality ('best-effort' for prices), and special flags (NYSE status, 24/7-on-Solana). No contradictions 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?
Three sentences, each adding value: first defines action and output, second adds source context, third enumerates fields. No redundancy or fluff.
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 source, data quality, and key fields. Given an output schema exists and the parameter is optional, this is nearly complete. Minor gap: no explanation of caller_id, but overall adequate for a list tool.
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 has one optional parameter (caller_id) with 0% description coverage. The description does not mention this parameter or its purpose, leaving the agent without guidance on when or why to provide it.
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 'List available tokenized equities' with specific fields (issuer, price, market hours, etc.), which distinguishes it from siblings like equity_quote or equity_positions. The verb 'list' and resource 'tokenized equities' are 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 implies usage for reading tokenized equity listings but does not explicitly state when to use it vs alternatives or provide exclusions. Context suggests it's the go-to for a catalog, but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equity_positionsARead-onlyIdempotentInspect
Tokenized-equity holdings for a wallet with live prices + market hours.
Read-only. Filters balances to registered equity mints; each: symbol, quantity, current_price, current_value_usd, issuer, regulatory_framework (avg_cost / unrealized P&L null until cost-basis tracking lands).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true, idempotentHint=true), the description adds details about return fields (symbol, quantity, current_price, etc.) and notes that avg_cost/unrealized P&L are null until cost-basis tracking lands. No contradictions.
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: first states core purpose, second adds key details. No extraneous information. Efficient and well-structured.
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's simplicity and the presence of an output schema, the description covers all necessary aspects: read-only behavior, filtering, fields, and a caveat about missing P&L. Complete for its complexity.
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 the description does not explain the parameters beyond implying wallet_address is needed. caller_id has no explanation. The description should add meaning, but it doesn't compensate for the missing schema descriptions.
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 'Tokenized-equity holdings for a wallet with live prices + market hours,' specifying a verb (holdings) and resource. It distinguishes from sibling tools like equity_quote or equity_corporate_events by focusing on holdings with live data.
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 explicitly notes 'Read-only' and 'Filters balances to registered equity mints,' providing clear context. It doesn't name alternatives or exclusions, but the purpose is sufficiently clear for selecting this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equity_quoteARead-onlyIdempotentInspect
Read-only Jupiter quote for a tokenized-equity trade (no execution).
amount is in base units of the INPUT token (USDC for buy, the equity for
sell). Returns expected output, price impact, effective fee, slippage, and
the SEC disclaimer. venue_hint is
ADVISORY, never required -- see trade_equity.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | buy | |
| amount | Yes | ||
| symbol | Yes | ||
| caller_id | No | ||
| venue_hint | No | ||
| slippage_bps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the return contents (expected output, price impact, effective fee, slippage, SEC disclaimer) and clarifies the advisory nature of venue_hint, which goes beyond the annotations without contradicting them.
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, front-loaded with the read-only and no-execution note, and uses backticks for code-like parameters. Every sentence adds meaningful information without unnecessary verbosity.
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 presence of an output schema reduces the need to detail return structure. The description covers the tool's purpose, key parameter semantics (amount, venue_hint), and returns conceptually. Minor gaps remain for unclarified parameters (symbol, caller_id, slippage_bps), but these are commonly understood in trading contexts and the overall intent is clear.
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 parameter explanations. It clarifies 'amount' (base units of input token, USDC for buy, equity for sell) and 'venue_hint' (advisory). However, it leaves 'symbol', 'caller_id', and 'slippage_bps' unexplained, and 'side' is only implicitly connected to amount. The most critical parameters are covered, but several remain ambiguous.
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 action: providing a read-only quote for a tokenized-equity trade, explicitly noting no execution. It distinguishes itself from related tools like trade_equity and jupiter_swap by emphasizing the read-only nature and the trade context.
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 key usage context: it clarifies the amount interpretation by side and notes that venue_hint is advisory, not required, with a pointer to trade_equity for execution. However, it does not explicitly state when to choose this tool over other quote-related tools (e.g., get_quotes) or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flash_loanADestructiveInspect
Marginfi flash loan for arbitrage (non-custodial, atomic).
instructions are JSON ix executed between borrow + repay legs. Returns a single UNSIGNED base64 tx that reverts unless repaid in-transaction. The borrowed token is authenticity-verified first; set allow_unverified=true to borrow an unverified mint at your own risk. Past the daily free tier an x402 payment_header is required.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-issuing the flash loan tx.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| amount | Yes | ||
| caller_id | No | ||
| instructions | Yes | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| marginfi_account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by explaining that it returns an UNSIGNED base64 tx, reverts unless repaid in-transaction, verifies the borrowed token, requires x402 payment past the free tier, and supports idempotent retry. This richly discloses operational behavior and does not contradict the readOnly=false/destructive=true 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 front-loaded with the most important purpose and then covers the execution model, safety behavior, fee requirement, and optional idempotency semantics. Every sentence provides necessary information and there is no 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?
Given the complexity and 0% schema coverage, the description covers the core mechanics and safety profile well. It does not fully document all optional parameters or explain how to construct instructions beyond 'JSON ix', but it is near-complete for safe invocation.
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 coverage, the description compensates well for key params: instructions, allow_unverified, payment_header, and idempotency_key. However, caller_id and pay_in_crank are not explained, and amount, wallet_address, and marginfi_account rely on their names rather than explicit semantics.
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 'Marginfi flash loan for arbitrage (non-custodial, atomic)', which gives a specific verb, resource, and use case. It clearly differentiates this tool from generic lending tools like lend_borrow by emphasizing the atomic, non-custodial, borrow-plus-repay mechanics.
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 specifies the intended context: arbitrage, non-custodial, atomic, and repaid within the transaction. It does not explicitly say 'use this instead of X' or name alternative lending tools, so the guidance is clear but not exclusionary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_walletADestructiveInspect
Fund a wallet with fiat via MoonPay (card/bank/Apple Pay -> USDC).
Returns a hosted checkout_url for the user to complete payment + a session_id to poll with get_onramp_status. Purchased USDC settles directly to wallet_address (non-custodial). payment_method: card | bank | apple_pay. The fee is charged on amount_usd notional past the daily free tier (x402 payment_header).
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result (same
checkout_url/session_id) instead of creating a second MoonPay session.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | USDC | |
| caller_id | No | ||
| amount_usd | Yes | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| payment_method | No | card | |
| wallet_address | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: non-custodial nature, fee calculation based on notional past a free tier, idempotency replay behavior when an idempotency_key is supplied, and the returned checkout_url and session_id. This goes beyond the annotations (which only indicate readOnly, openWorld, idempotent, destructive hints) and enriches the agent's understanding of side effects.
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 relatively short but contains some cryptic elements (e.g., '(x500 payment_header)' appears to be a placeholder or typo that reduces clarity). It avoids redundancy, but the awkward phrasing around the fee and payment_header could be smoother.
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 has an output schema and 8 parameters, the description covers the core flow and return values but lacks detailed explanations for several parameters and does not provide usage scenarios or edge cases. It is adequate for basic understanding but not fully comprehensive for an agent to invoke it correctly in varied contexts.
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 explains some parameters (amount_usd, payment_method with allowed values, wallet_address implicit, idempotency_key replay) but leaves several others unexplained: currency, caller_id, pay_in_crank, payment_header. Since the schema itself has no descriptions (0% coverage), any added meaning is helpful, but it's incomplete for a tool with 8 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 states a specific verb ('Fund'), a resource ('wallet'), and the method (via MoonPay) with a clear direction (fiat to USDC). It distinguishes itself from offramp tools by indicating the direction, and the mention of MoonPay provides a concrete implementation detail.
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 (funding a wallet with fiat) but does not explicitly say when to prefer this over alternatives like offramp_to_fiat or other payment tools. No conditional guidance or comparison to siblings is provided, leaving the decision partially implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_profileARead-onlyIdempotentInspect
Read an agent's published profile + its referral stats (read-only, free).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the 'free' attribute and specifies the data returned (profile + referral stats), providing value beyond 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?
A single sentence that conveys the tool's essence with no extraneous words. Every word earns its place.
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 a simple read operation with 2 parameters and an output schema. The description is complete for the purpose but lacks parameter documentation, which is a notable gap.
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 and no parameter information in the description, the agent must infer from parameter names. The description adds no meaning beyond the schema, failing to compensate for the coverage gap.
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 the specific verb 'Read' and identifies the resources 'published profile' and 'referral stats'. It clearly distinguishes from sibling tools like 'update_agent_profile' and other read 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 includes 'read-only, free' which implies when to use (read operations, no cost) but does not explicitly state when not to use or mention alternatives. The context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_venues_statusARead-onlyIdempotentInspect
Dashboard overview of all configured venues for routing decisions.
Read-only. One health record per active venue (status, deploy slot, TVL, 24h volume, composite safety score) so an agent can pick a venue in a single call. detail="concise" (default) trims each record to venue/ display_name/status/composite_score (venue is the ID to chain into get_venue_health); "full" adds deploy slot, TVL, 24h volume, uptime.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | concise | |
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explains record shape, field sets, concise/full modes, and the fact that only active venues appear. It also tells the agent that venue is the ID to chain into get_venue_health, which is useful behavioral context 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 compact and front-loads the main purpose. It explains the field modes clearly in a deliberately chosen format; the only minor redundancy is repeating "Read-only" when the annotations already declare readOnlyHint.
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 an output schema exists and read-only/idempotent annotations are provided, the description covers invocation intent, record shape, and a sensible follow-up tool. It could be slightly more explicit about the decision between get_all_venues_status and get_venue_status, but nothing essential to invoking the tool correctly is missing.
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 compensates for the 0% schema coverage by explaining `detail` values: "concise" trims records and "full" adds deploy slot, TVL, volume, and uptime. It does not explain `caller_id`, but that parameter is optional with a default and seems peripheral to functionality.
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 a specific resource: a dashboard overview of all configured venues with per-venue health records. It states the operational purpose, routing decisions, and distinguishes itself from single-venue tools by emphasizing 'all' and 'one health record per active venue.'
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 clear context: use this as an overview when picking a venue in a single call, and it even points to get_venue_health as the follow-up. It does not explicitly state exclusions like 'use get_venue_status for a single venue,' but the intended workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_arb_discrepanciesARead-onlyIdempotentInspect
Persisted cross-venue discrepancy episodes (free read).
Already-debounced cross_exchange signals (each required >= N
consecutive polls above the discrepancy threshold to exist at all),
filtered to spread_bps >= min_spread_bps and optionally to assets,
within window_hours. One entry per episode: venue pair, spread,
first/last seen, persistence, reference price. Observed data,
decision-support only -- ignores fees, slippage, and transfer latency;
never an execution instruction. Not financial advice.
Workflow: INTELLIGENCE step -- pair with get_cross_exchange for the current live-ish read on a specific asset.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | ||
| caller_id | No | ||
| window_hours | No | ||
| min_spread_bps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, etc. The description adds valuable behavioral context: the data is 'already-debounced' requiring consecutive polls, and is 'decision-support only.' No contradictions 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?
The description is front-loaded with the core purpose, followed by concise technical details, disclaimers, and workflow integration. Every sentence adds value without redundancy or fluff.
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 that an output schema exists (not shown), the description need not detail return values. It explains episode content (venue pair, spread, times, reference price), limitations, and integration with a sibling tool. Combined with annotations, this provides a complete picture.
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 explain parameters. It mentions 'assets,' 'min_spread_bps,' and 'window_hours' with clear semantics. However, 'caller_id' is not referenced. Despite this omission, the description provides sufficient meaning for the majority of 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 clearly defines the tool as retrieving 'Persisted cross-venue discrepancy episodes (free read),' explicitly distinguishing it from the sibling 'get_cross_exchange' by noting it is persisted and debounced versus a 'current live-ish read.' The verb 'get' and resource 'arb discrepancies' are 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 explicit usage guidance: it is an 'INTELLIGENCE step' to be paired with 'get_cross_exchange' for live reads. It also states limitations ('ignores fees, slippage, and transfer latency; never an execution instruction'), clearly defining when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balancesARead-onlyIdempotentInspect
Wallet token balances (SOL + all SPL tokens) with USD valuations.
detail="concise" (default) returns total_usd + count + balances trimmed to token/symbol/usd_value (IDs for chaining into e.g. get_quotes); "full" returns every field (amount, price_usd) as before.
Workflow: ORIENT step -- the starting read for any flow. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | concise | |
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In addition to the readOnly hints, the description reveals how the response changes based on `detail`, including the default output shape (total_usd, count, trimmedbalance entries) and the fuller shape of `full`. It also notes that returned IDs are meant for chaining, giving the agent useful expectations for downstream.
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: three sentences are tightly focused: what it returns, how modes differ, and how to position. It fits an agent workflow and uses non-redundant phrasing.
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?
With an output schema in place, a robust annotations block, and active description detailing mode semantics and workflow ordering, the entry is complete. The`caller_id` is the only marginal gap, and it's not essential to tool selection or core invocation correctness.
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 a lot for `detail`, detailing the default value and exact effect of 'uscise' vs 'full'. However, it does not explain `caller_id` at all, and `wallet_address`'s format or validation behavior is not explicitly documented. Given 0% parameter description coverage in the schema, the description partially but not fully 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 states the exact resource and scope: wallet token balances covering SOL plus all SPL tokens, and adds USD valuations. It further distinguishes itself by explaining the concise/full response modes and placing itself as the ORIENT/starting read, which is clearly distinct from nearby wallet-focused 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 explicitly names and marks this as 'ORIENT step' and the starting read 'for any flow', which tells an agent exactly when it should be selected. The instruction 'See get_trading_workflow' and the IDs 'for chaining into e.g. get_quotes' provide concrete routing guidance and references to related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bridge_quoteARead-onlyIdempotentInspect
Cross-chain bridge quote via deBridge DLN (FREE read, no execution).
Quote moving amount (source-token base units) of src_token on
src_chain into dst_token on dst_chain. Supported chains:
ethereum, arbitrum, base, optimism, polygon, bnb, avalanche, linea,
solana (one side must be solana). Returns estimated destination amount,
per-leg USD values, and DLN protocol costs. Use before bridge_in /
bridge_out. Nothing is charged and no order is created.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| caller_id | No | ||
| dst_chain | Yes | ||
| dst_token | Yes | ||
| src_chain | Yes | ||
| src_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that nothing is charged, no order is created, and returns estimated destination amount, per-leg USD values, and DLN protocol costs. This meaningfully extends the readOnlyHint into concrete behavioral expectations.
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 well-structured and front-loaded with the most important information: free read and no execution. Every sentence earns its place, covering purpose, semantics, supported chains, return values, and usage context without redundancy.
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 is strong overall: it covers safety, parameter roles, supported chains, and precedes the execution siblings. The remaining gaps are minor but real — the exact token identifier format and caller_id semantics are not addressed — though the output schema likely covers return expectations.
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 compensates by explaining that amount is in source-token base units, what src_token/src_chain and dst_token/dst_chain mean, and listing supported chains. However, it leaves caller_id unexplained and does not specify whether tokens are addresses or symbols.
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 the operation (quote), the resource (cross-chain bridge via deBridge DLN), and explicitly disambiguates from execution tools by saying 'FREE read, no execution.' It clearly distinguishes itself from siblings like bridge_in and bridge_out.
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?
Explicitly states the intended workflow position: 'Use before bridge_in / bridge_out.' It also tells the agent that no order is created, clarifying that this is a pre-flight quoting step, not an execution step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bridge_statusARead-onlyIdempotentInspect
Poll a dispatched DLN bridge order's fulfillment status (FREE read).
Follow-up to bridge_in/bridge_out: a dispatched order stays
"pending"/"broadcast" in Crank's own record forever unless polled -- this
queries deBridge's dlnOrderStatus endpoint by order_id (returned as
order_id from bridge_in / bridge_out) and best-effort updates the matching
BridgeTransfer row. Returns dln_status (raw DLN value) and status (mapped
onto pending/fulfilled/cancelled).
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description directly contradicts the readOnlyHint annotation: it says the tool 'best-effort updates the matching BridgeTransfer row,' which is a write operation despite readOnlyHint=true. This is a significant safety-relevant inconsistency that should be flagged.
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 dense but well-structured, front-loading the core action and then providing useful context about the underlying mechanism and return values. It is slightly longer than strictly necessary, but each sentence contributes meaningful 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?
The description covers the operation's trigger, external behavior, return mapping, and internal side effect. With an output schema present and annotations covering idempotency and non-destructiveness, the main gap is caller_id documentation and the conflict with readOnlyHint.
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 useful meaning for order_id by explaining that it is returned from bridge_in/bridge_out. However, caller_id is not explained at all, and the schema has 0% description coverage, so one parameter remains semantically opaque.
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 identifies a specific action—polling a dispatched DLN bridge order's fulfillment status—and clearly ties it to bridge_in/bridge_out as a follow-up. It names the external endpoint and the returned values, making it easy to distinguish from other status 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 states explicitly that this is a follow-up to bridge_in/bridge_out and explains why polling is necessary (the order stays 'pending'/'broadcast' in Crank's record unless polled). It does not list alternatives or when not to use it, but the context is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collective_insightsARead-onlyIdempotentInspect
Fleet-wide collective insights, historical performance data (free read).
Filters: asset (mint/symbol), strategy_type, insight_type (one of param_performance/signal_effectiveness/timing/venue_quality/crowding/ regime_conditional). Only active, current insights are ever returned. Each insight carries n (contributing agents), effect_size, a confidence interval, crowding_index, staleness (age and expiry), and a rendered human-readable statement; detail=full adds the observed params and signal_keys. Every response is historical collective performance data aggregated across the Crank agent fleet -- descriptive only, never a recommendation or a promise of results.
Workflow: INTELLIGENCE step -- fleet-wide context alongside get_market_briefing / get_consensus before sizing or creating strategies.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | ||
| detail | No | concise | |
| caller_id | No | ||
| insight_type | No | ||
| strategy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description goes beyond this by disclosing that only active, current insights are ever returned, that detail=full changes the payload, that every response is historical aggregated data, and that it is descriptive only and never a recommendation. No contradiction exists.
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 dense but well organized: a one-line summary, filter details, returned-field semantics, a behavioral caveat, then workflow placement. Every sentence contributes, though there is slight redundancy between 'historical performance data' in the first line and 'historical collective performance data' later.
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 an output schema and strong read-only annotations, the description covers purpose, filter semantics, output contents, safety behavior, and usage workflow. The main missing pieces are an explanation of caller_id and the default behavior when no filters are provided, which keeps it from being fully 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?
Schema description coverage is 0%, so the description carries the parameter-documentation burden. It clearly defines asset (mint/symbol), names strategy_type as a filter, gives a full enum for insight_type, and explains the effect of detail=full. However, caller_id is never explained, and strategy_type valid values are not enumerated, leaving partial gaps.
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 specific verb+resource pair: 'Fleet-wide collective insights, historical performance data (free read).' It then enumerates the exact insight types and fields returned, and positions the tool within the INTELLIGENCE workflow alongside get_market_briefing / get_consensus, which differentiates it from the many other get_* read tools in the sibling list.
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 'Workflow: INTELLIGENCE step' sentence explicitly tells the agent when to use this tool: for fleet-wide context before sizing or creating strategies, alongside get_market_briefing and get_consensus. The 'never a recommendation' caveat also clarifies that output should not drive direct execution. However, it does not provide explicit when-not-to-use guidance or name alternatives to prefer in specific cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_consensusARead-onlyIdempotentInspect
Multi-source consensus + contrarian read for one asset (PLATINUM premium).
Cross-references the classified intelligence signals for asset over the last
window_hours (default 24): how many independent sources agree on direction
(consensus_score 0-1), the source breakdown (bullish/bearish/neutral), and the
accuracy-weighted directional score (-1..+1) that blends each source's call by its
historical hit-rate (get_source_accuracy). High agreement (>80%) is flagged as a
crowded, potentially contrarian condition; low agreement (<30%) as uncertain. This
is a PLATINUM-tier feature: covered by a Platinum $CRANK-staker subscription, or
pay the per-call x402 fee with payment_header (PAYMENT_REQUIRED otherwise); the
billing outcome is in the response billing field. Descriptive signal only, not
a recommendation. Not financial advice.
Workflow: INTELLIGENCE step -- pair with get_market_briefing + get_source_accuracy to gauge how crowded a directional read is before sizing.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| caller_id | No | ||
| window_hours | No | ||
| payment_header | No | ||
| wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, idempotentHint true and destructiveHint false. The description reinforces these by stating 'Descriptive signal only, not a recommendation' and 'Not financial advice.' It adds billing context and explains the consensus score range, exceeding what annotations alone provide.
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 front-loaded with the purpose in the first sentence, followed by detailed explanation and a clear workflow section. No redundant sentences; each adds value. Length is appropriate for the complexity.
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 5-parameter tool with 0% schema coverage and no output schema details, the description provides comprehensive context: premium tier, billing, consensus scoring ranges, source breakdown, and workflow pairing. It is fully complete for an agent to understand usage.
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 carries the burden. It effectively explains 'asset', 'window_hours' (with default 24), and mentions 'payment_header' for billing. However, 'caller_id' and 'wallet_address' are not explained, leaving some ambiguity. Still, the main parameters are well-covered.
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 first sentence clearly states the verb 'get', the resource 'multi-source consensus + contrarian read for one asset', and distinguishes from siblings by specifying 'PLATINUM premium' and the 'INTELLIGENCE step' workflow context. It is specific and unique.
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 explicit guidance: 'Workflow: INTELLIGENCE step -- pair with get_market_briefing + get_source_accuracy to gauge how crowded a directional read is before sizing.' It also explains premium tier and payment process, telling the agent when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contrarian_signalsARead-onlyIdempotentInspect
Contrarian (crowded) + uncertain assets across the window (PLATINUM premium).
Scans the classified intelligence signals over the last window_hours and returns
assets where source agreement is very high -- a one-sided, crowded positioning
flagged as a potential contrarian condition (with the side a contrarian would take)
-- and assets where agreement is very low (uncertain). With asset set, returns
just that asset's assessment. PLATINUM-tier: covered by a Platinum $CRANK-staker
subscription or a verified x402 payment_header (PAYMENT_REQUIRED otherwise); the
billing outcome is in billing. Descriptive signal only, not a recommendation.
Not financial advice.
Workflow: INTELLIGENCE step -- surface crowded trades to fade or uncertain assets to avoid before committing to a regime/allocation.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | ||
| caller_id | No | ||
| window_hours | No | ||
| payment_header | No | ||
| wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, destructiveHint false. The description adds behavioral details: scans over window_hours, returns assets with high/low agreement, billing outcome in 'billing', and states it's not a recommendation. 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?
The description is front-loaded with the main purpose and includes necessary details (billing, disclaimer). It is organized but slightly long. Each sentence adds value, though some could be more concise.
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?
Covers main functionality and billing context, but missing descriptions for caller_id and wallet_address parameters. With 0% schema coverage, more detail is needed for full understanding. Output schema exists but is not shown, so return values are partially explained.
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 description must compensate. It explains window_hours (time window), asset (filters to one asset), and payment_header (via x402 payment). However, it does not describe caller_id or wallet_address, leaving gaps.
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 scans for contrarian (crowded) and uncertain assets based on source agreement, with a specific verb 'scans' and resource 'classified intelligence signals'. It distinguishes itself by mentioning 'PLATINUM premium' and 'contrarian' vs. other signal tools, but does not explicitly differentiate from siblings like get_signals or get_ml_signal.
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?
Provides context: 'Workflow: INTELLIGENCE step -- surface crowded trades to fade or uncertain assets to avoid before committing to a regime/allocation.' This implies when to use it (before committing) and that it's descriptive only. However, it lacks explicit exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_crank_scoreARead-onlyIdempotentInspect
A wallet's Crank Score reputation breakdown (FREE read).
Returns total_score, per-activity components (trade / staking / strategy /
social / claim), sybil_flagged + penalty_bps, and the score-gated perks it
unlocks under gates: fee_discount_bps (additional technology service fee
discount), daily_send_limit (higher social-send cap), priority_access, and
the gate tier (0-3). Score accrues from on-platform activity; circular
funding between wallets is flagged + penalised. Well-formed zeros for an
unscored wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds meaningful behavioral context: how the score is accrued (on-platform activity), the penalty for circular funding, and the 'well-formed zeros' response for unscored wallets. This goes beyond mere annotation repetition and helps the agent understand the tool's behavior and output nuances.
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 efficient and well-structured. The first sentence is a clear summary, followed by a compact enumeration of return fields and a note on behavior. No filler or repetition; every sentence adds value. It is front-loaded with the tool's essence and additional details are logically ordered.
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 return fields extensively, including gates and penalties, and even notes the behavior for unscored wallets. The only gap is the lack of explicit parameter documentation, but since the output schema is present (as indicated by the context signal) and the main parameter is obvious, the description is sufficiently complete for an agent to invoke the tool correctly. It could still benefit from mentioning the caller_id parameter or any possible error conditions, but overall it is near-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?
Schema description coverage is 0%, so the description must compensate. It implicitly makes clear that 'wallet_address' is the key input (by describing a wallet's score), but it does not explicitly describe either parameter. The optional 'caller_id' is not mentioned at all, and there is no guidance on formats or expectations. Given the required parameter is self-explanatory, the description partially compensates, but the lack of explicit parameter documentation prevents a higher score.
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: retrieving a wallet's Crank Score reputation breakdown. It specifies the resource (wallet) and the exact output fields (total_score, components, sybil_flagged, gates, etc.), distinguishing it from the many sibling get_* tools by naming the specific 'Crank Score' concept. No ambiguity.
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?
There is no explicit guidance on when to use this tool versus alternatives. The description mentions 'FREE read' but does not explain the difference from other score-related tools like get_score or get_my_contribution_score, nor does it specify conditions (e.g., 'use this when you need the full breakdown'). An agent would have to infer usage from the purpose, which is not ideal given the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cross_exchangeARead-onlyIdempotentInspect
Cross-venue snapshot for one asset (free read).
Per-venue price/bid/ask/movement (5m/1h/24h change), the pairwise spread matrix (bps), the widest current spread, and -- for wrapped-asset legs (BTC/ETH) only -- the Solana-DEX wrapped-asset premium vs the CEX-consensus reference price. Observed data, decision-support only -- spreads ignore fees, slippage, and cross-venue/bridge transfer latency; never an execution instruction. Not financial advice.
Workflow: INTELLIGENCE step -- pair with get_arb_discrepancies for the persisted, already-debounced episode history.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| caller_id | No | ||
| window_minutes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds important caveats: spreads ignore fees/slippage/latency, data is 'decision-support only', and the tool is a 'free read'. No contradictions 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?
The description is front-loaded with the summary sentence, then a bullet-like list of data fields, and ends with a workflow tip. Every sentence adds value; no fluff. Appropriately sized for the tool's complexity.
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 output schema exists and the tool is relatively simple, the description provides enough context for the agent to understand the tool's purpose and limitations. However, the lack of parameter explanations (especially for window_minutes) slightly reduces completeness, as the agent may not know how to correctly set the time window.
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% (no parameter descriptions). The description fails to explain the parameters: 'asset' is implied but not explicitly defined, 'window_minutes' is not connected to the listed movement windows (5m/1h/24h), and 'caller_id' is completely unaddressed. The description relies on common sense but does not add sufficient meaning beyond parameter names.
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 provides a 'Cross-venue snapshot for one asset (free read)' and lists specific data points (price/bid/ask/movement, spread matrix, wrapped-asset premium). It distinguishes from sibling tools by noting pairing with get_arb_discrepancies for episode history.
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 explicitly frames it as an 'INTELLIGENCE step', advises pairing with get_arb_discrepancies, and warns against using as execution instruction or financial advice. These guidelines help an agent decide when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disclaimersARead-onlyIdempotentInspect
Compliance disclaimers for an asset class (SEC framework).
Pass asset_classification (crypto/equity/wrapped_major/lst/stablecoin), or a token_address/symbol to classify first. Equity adds a securities-specific non-registration / not-advice notice. Full text: crank.ing/disclosures.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | ||
| caller_id | No | ||
| token_address | No | ||
| asset_classification | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and open-world behavior. The description adds context about the SEC framework, asset classification, and a separate notice for equity, which improves transparency beyond 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 efficient sentences with clear front-loading of purpose, followed by input options and a reference to full text. No unnecessary 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 an output schema, the description covers the core functionality and input options adequately. The only missing detail is the purpose of caller_id, but overall it is 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?
With 0% schema description coverage, the description compensates by explaining the main parameters: asset_classification (with enumerated values) and token_address/symbol for classification. The caller_id parameter is omitted, leaving a minor gap.
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 retrieves compliance disclaimers for an asset class under the SEC framework. It specifies accepted asset classifications and alternative identifier inputs, distinguishing it from 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 explains when to use the tool: to get disclaimers for an asset. It provides guidance on input options (asset_classification vs. token_address/symbol) and notes a special case for equity. However, it does not explicitly contrast with alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_emerging_patternsARead-onlyIdempotentInspect
Anonymized emergent fleet behaviour motifs (free read).
Returns ordered behaviour motifs -- sequences of (regime, signal_key, action, outcome_sign) steps -- that many distinct agents exhibited and that map to NO existing strategy type in the standing taxonomy. Each carries n_agents, an anonymized aggregate effect_size with a confidence interval, and staleness. Filter with min_agents; limit caps the result count (max 100). No wallet address or cohort key is ever returned. Historical collective performance data aggregated across the Crank agent fleet -- descriptive only, never a recommendation or a promise of results.
Workflow: INTELLIGENCE step -- see what the fleet is doing that no existing strategy type describes, before designing a new strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No | ||
| min_agents | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite strong annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint), the description adds meaningful behavioral context: anonymization, never returning wallet/cohort keys, aggregate historical data, staleness, descriptive-only nature, and 'never a recommendation or a promise of results.' It also clarifies the read-only nature with 'free read.' 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?
The description opens with a compact one-line summary, then provides return details, filters, privacy guarantees, and workflow context in a logical order. Every sentence adds value; no filler 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?
It covers what the tool returns, how to filter, privacy behavior, and when to use it. The output schema presumably covers structured return values, so that is not required. Minor gaps include the ordering criterion for 'ordered behaviour motifs' and the meaning of 'staleness,' but the description is still largely sufficient for correct invocation.
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 compensate. It explains min_agents ('Filter with min_agents') and limit ('caps the result count (max 100)'), but leaves caller_id completely unexplained. This is a partial gap given the low schema coverage.
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 ('Returns') and a concrete resource ('ordered behaviour motifs -- sequences of (regime, signal_key, action, outcome_sign) steps'). It clearly distinguishes itself from sibling intelligence tools by emphasizing motifs that map to NO existing strategy type, so an agent can tell it apart from get_collective_insights, get_signals, and similar get_* 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?
It explicitly frames usage as an INTELLIGENCE step before designing a new strategy ('see what the fleet is doing that no existing strategy type describes, before designing a new strategy'). It does not name alternative tools or state when not to use it, but the workflow guidance is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_health_factorARead-onlyIdempotentInspect
Liquidation-risk monitor for a lending position.
Returns health_factor (>1 safe, <1 liquidatable), collateral value, debt value, liquidation threshold. protocol: kamino | marginfi.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | ||
| protocol | Yes | ||
| caller_id | No | ||
| wallet_address | Yes | ||
| marginfi_account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by explaining the health factor meaning and return fields, which goes beyond what annotations provide. No contradictions.
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 extremely concise with two sentences, front-loading the core purpose and critical output details. No extraneous words; every sentence 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?
Given the tool's simplicity and presence of an output schema, the description adequately covers the purpose, output fields, and protocol constraints. It misses optional parameter explanations but is otherwise complete for a query tool.
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 compensate. It only mentions protocol (kamino/marginfi) but does not explain wallet_address, market, marginfi_account, or caller_id. This leaves significant gaps for a 5-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 it monitors liquidation risk for lending positions, returning health factor with thresholds (>1 safe, <1 liquidatable) along with collateral/debt values. It specifies supported protocols (kamino, marginfi), distinguishing it from siblings like get_lending_rates or set_liquidation_alert.
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 checking liquidation risk but lacks explicit when-to-use or when-not-to-use guidance. It does not differentiate from other getters or state alternatives. Given the straightforward nature of a query tool, the implicit guidance is adequate but not exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ilo_adoption_statusARead-onlyIdempotentInspect
The ILO adoption gate -- one machine-checkable readiness read (free).
Published Engaij, Inc. policy: the ILO proceeds only once
Crank has 1,000 active users, where an active user has at least 5 executed
Crank transactions inside a rolling 7-day window. Signups do not count.
Returns gate_met (active_users >= 1000), active_users, near_active_users,
users_with_any_tx and the pinned transaction definition. A transaction is
an EXECUTED trade only -- a recorded swap (broadcast signature required),
a perp open, or a user-initiated perp close; reads, quotes, unexecuted
intents, paper trades, liquidations and devnet activity never count.
cluster=devnet exposes the same metric for pre-launch observability;
the gate itself is the mainnet number. Aggregate counts only, no
per-wallet data. Informational readiness metric; not a promise of any
launch, outcome or timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster | No | mainnet | |
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive. The description adds transparency about aggregation (no per-wallet data), the mainnet/devnet distinction, and the explicit 'no promise' caveat, which is valuable 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?
Front-loaded with the core purpose expect, then details the metric definition, cluster behavior, and data scope. Dense but well-structured; could be trimmed slightly but each sentence adds meaning.
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?
Covers purpose, return metrics (gate_met, counts, transaction definition), cluster semantics, data aggregation limits, and the non-committal nature. Nothing essential is missing for an agent to call 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?
Schema has no descriptions; the description explains the 'cluster' parameter (devnet vs mainnet) but leaves 'caller_id' entirely unexplained. Partial coverage, with the critical parameter addressed.
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?
States a specific resource (ILO adoption gate) with a clear verb ('reads') and immediate distinction from sibling tools by defining the metric and its scope. The description makes the purpose unmistakable.
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?
Explains the gate's role, the devnet vs mainnet choice for observability, and explicitly notes it's informational only (‘not a promise…’). It doesn't name alternative tools, but the context is sufficient for an agent to decide when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ilo_detailsARead-onlyIdempotentInspect
Read a token launch live from chain (free): terms, status, escrow balances, and a machine-readable liquidity release schedule.
launch_id is the on-chain u64 launch identifier. Returns the raise
window and progress, the per-wallet pledge cap (0 = uncapped), live escrow
launch-vault balances, and a
release_scheduleblock (cliff-then-linear) an agent can plan future claim_ilo_tokens calls from without parsing prose. Passcaller_walletto attach that wallet's own pledge summary too (the authoritative per-wallet view is get_my_pledge_status).
Utility token fair launch: participating commits funds to a non-custodial escrow; it is not a purchase of an expectation of profit.
Workflow: DISCOVER step -- read details, check the window and the per-wallet cap, then preview with pledge_to_ilo (plan mode) before committing anything.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| launch_id | Yes | ||
| caller_wallet | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior; the description adds materially to that by clarifying the tool reads live on-chain data, is free, returns a machine-readable schedule for planning claim_ilo_tokens calls, and that escrow is non-custodial. This helps reason about side effects and timing without contradicting 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 carefully structured: a one-sentence overview, a backtick-delimited note on launch_id, then the caller_wallet caveat, the fair-launch usage context, and the recommended workflow. Every sentence earns its place, and the important usage guidance is front-loaded.
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 rich annotations, an output schema, and the description's own enumeration of the returned content, nothing essential is missing. The description covers purpose, key parameters, workflow, alternative tools, and behavioral caveats.
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 shoulders the burden for parameter meaning. It clearly explains launch_id as an on-chain u64 identifier and explains the optional caller_wallet effect and cap semantics (0 = uncapped). However, the caller_id parameter is never mentioned, which is a small but real gap.
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 specific verb and resource: 'Read a token launch live from chain', and enumerates the concrete data returned: terms, status, escrow balances, and release schedule. It also explicitly differentiates itself from get_my_pledge_status, so an agent can distinguish which tool is authoritative for per-wallet data.
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 a concrete workflow: use it in the DISCOVER step, read details, check the launch window and per-wallet cap, then preview with pledge_to_ilo before committing. It also names get_my_pledge_status as the authoritative per-wallet alternative, making routing decisions explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indicatorsARead-onlyIdempotentInspect
Full standard technical-indicator set for one asset/timeframe (read-only).
Computes sma, ema, macd, adx (+DI/-DI), rsi, stochastic (%K/%D), roc, bollinger (mid/upper/lower/width/%B), atr, keltner, realised_vol, vwap, volume_ratio and volume_profile (POC / value area / high-volume-node liquidity bands with 0-1 depth scores) from recent OHLCV via the canonical backend/indicators library. asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d; indicators selects a subset (empty = all); lookback candles capped at 500; params overrides per indicator, e.g. {"rsi": {"period": 21}}; include_series=true adds per-bar series (last 200 points). Readings are None while history is warming up. Computed readings only -- not financial advice, not a trade instruction (DYOR). No wallet, no fee, no on-chain action.
Workflow: INTELLIGENCE step -- raw indicator readings underlying detect_regime; pair with get_ml_signal (forecast) + get_signals (persisted cross-source signals). See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| params | No | ||
| lookback | No | ||
| caller_id | No | ||
| timeframe | No | 1h | |
| indicators | No | ||
| include_series | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. The description adds that it computes readings only, involves no wallet/fee/on-chain action, and that readings are None while history is warming up. This goes beyond annotations and clarifies behavioral traits.
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 lengthy but well-structured with a clear opening, bullet-like listing of indicators, parameter explanations, and workflow context. Every sentence adds value; it is efficient for its complexity.
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's complexity (multiple indicators, parameters, output schema exists), the description covers input semantics, behavior during warm-up, workflow integration, and disclaimers. No gaps remain for an informed selection and invocation.
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 fully compensates by explaining each parameter: asset is a token mint, timeframe with allowed values, indicators as a subset array, params as a JSON override, lookback capped at 500, include_series for per-bar data. It also describes the output indicator structure with examples.
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 computes the full standard technical-indicator set for one asset/timeframe, specifying it is read-only. It lists the indicators (sma, ema, etc.) and differentiates from sibling tools by labeling it as an INTELLIGENCE step and suggesting pairing with get_ml_signal, get_signals, etc.
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 explicit context: it's for raw indicator readings as part of a workflow, not financial advice, and readings are None during warm-up. It mentions pairing with detect_regime, get_ml_signal, get_signals, and refers to get_trading_workflow. However, it does not explicitly state when not to use or alternatives beyond these siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integrator_earningsCRead-onlyIdempotentInspect
Per-action + per-month integrator earnings (onboarding API). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No | ||
| integrator_wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Read-only', which aligns with annotations (readOnlyHint=true). It adds minor context about the data scope (per-action, per-month) but does not disclose any additional behavioral traits beyond what annotations already provide. With annotations covering the safety profile, a 3 is reasonable.
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 extremely concise at two short fragments, but the conciseness comes at the cost of missing essential information like parameter details. It is not well-structured for an agent to understand how to invoke the tool correctly.
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?
With an output schema existing, return values are covered externally. However, the description lacks parameter semantics, usage context, and any behavioral nuances beyond read-only. For a tool requiring a wallet address, the omission is significant.
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 the description fails to explain any of the three parameters (limit, caller_id, integrator_wallet_address). The phrase 'per-action + per-month' hints at aggregation but does not clarify parameter roles or defaults. This is a critical gap.
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 retrieves integrator earnings, specifying 'per-action + per-month' and 'onboarding API', which provides a specific verb-resource combination. However, it does not differentiate from sibling tools like get_integrator_stats, so a 4 is appropriate.
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 on when to use this tool versus alternatives, no conditions or prerequisites. The description simply states what it does without any contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integrator_statsARead-onlyIdempotentInspect
Integrator dashboard: status, share, onboarded count, earnings breakdown.
Read-only. Every figure is fee-share USD (technology service fees the onboarded agents paid), never PnL -- a fee-share, never a performance-share.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| integrator_wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description explicitly clarifies that all figures are fee-share USD, not PnL or performance-share, adding valuable behavioral context not inferable from annotations alone.
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 extremely concise, using two clear sentences with no redundancy. The first sentence lists the data categories; the second clarifies the fee-share nature. Every sentence 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?
While the output schema presumably covers return structure, the description omits critical context like the required integrator_wallet_address parameter, prerequisites, or a more detailed breakdown of the dashboard fields, making it incomplete for a tool with no parameter documentation.
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 fails entirely to explain the two parameters ('caller_id' and 'integrator_wallet_address'), their meaning, or how to use them, leaving the agent without necessary context.
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 provides an integrator dashboard including status, share, onboarded count, and earnings breakdown, using a specific verb-resource combination. It distinguishes itself from the sibling tool 'get_integrator_earnings' which focuses only on earnings.
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?
Usage context is implied (for integrators wanting a dashboard overview), but no explicit guidance is given on when to use this tool versus alternatives like 'get_integrator_earnings' or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_intent_statusARead-onlyIdempotentInspect
Read the persisted lifecycle state of an execution intent (free read).
Returns the server-persisted state only -- CREATED, APPROVED, SUBMITTED, UNKNOWN, CONFIRMED, FAILED, or EXPIRED -- plus the simulation summary and the on-chain signature once submitted. Never infers: UNKNOWN means an unresolved send (may have landed); only CONFIRMED is a verified on-chain success (fail-closed reporting, docs/CRANK_PLUGIN_SPEC.md section 6).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| intent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations, such as 'Never infers', the fail-closed reporting approach, and the specific meaning of UNKNOWN and CONFIRMED. This aligns with and enhances the readOnlyHint, idempotentHint, and destructiveHint 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, consisting of two sentences that front-load the purpose and then provide essential behavioral details. Every sentence adds value without unnecessary 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?
Given that an output schema exists, the description appropriately focuses on what the tool does and the semantics of the returned states rather than repeating return value details. The behavioral explanations make the tool's usage complete for an agent.
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 input schema has 0% description coverage, and the description provides no additional meaning or guidance about the parameters (intent_id and caller_id). As a result, the agent must rely solely on the schema types and defaults, which is insufficient.
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 explicitly states 'Read the persisted lifecycle state of an execution intent (free read)' and lists all possible states, clearly defining the tool's purpose. It distinguishes itself from sibling tools like create_execution_intent by emphasizing its read-only nature and specific state semantics.
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 the tool (for reading lifecycle state) and clarifies the meaning of ambiguous states (UNKNOWN vs CONFIRMED), but does not explicitly mention when not to use it or offer alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_journal_cardARead-onlyIdempotentInspect
Build the shareable journal card for one of YOUR decisions (free read).
Every trading claim online is an unverifiable screenshot. This one is not: the card carries what you decided, the process you followed, what the record shows happened, and a public explorer link to the on-chain transaction so anyone can check it without a Crank account. It also carries a schema.org JSON-LD node so the public card page is citable by answer engines.
The card is a CRAFT record -- decision type, whether an expectation was stated up front, which outcome horizons were recorded, whether the stated expectation and the record line up, how confidently the record attributes to on-chain fills. It deliberately carries no amounts and no percentages: it is a record of process, not a claim about results.
include_rationale (default false) opts your own journal rationale
and intended action into the public card. Your journal body is private
to your wallet, so publishing any of it is always an explicit act.
Workflow: after journal_append / journal_query -- pick a decision you want to show, then share_journal_card to get the pre-filled post.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| decision_id | Yes | ||
| wallet_address | Yes | ||
| include_rationale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description goes well beyond those: it warns that 'include_rationale' opts journal rationale and intended action into the public card, stresses that journal body is private and publishing is an explicit act, explains that the card deliberately excludes amounts and percentages, and details the CRAFT record fields and Explorer link. This gives the agent a strong behavioral model beyond the structured annotation 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?
The description is organized with useful sections and front-loading, but it is verbose and includes rhetorical framing like 'Every trading claim online is an unverifiable screenshot,' which does not earn its place for tool invocation. The privacy note and workflow are valuable and the structure is readable, but it should be tighter.
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 there is an output schema, the description does not need to explain return values, and it provides strong context for behavior, privacy, and workflow. What keeps it from a 5 is that the workflow refers to a sibling tool and the parameter semantics are incomplete, so an agent still has ambiguity about what fields are necessary and how the card is surfaced relative to 'share_journal_card'.
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 schema has 0% property description coverage, so the description must carry parameter meaning. The only parameter actually explained in the description is 'include_rationale,' including its default and privacy consequence. The other three parameters — 'wallet_address', 'decision_id', and 'caller_id' — receive no meaningful explanation or format guidance, which is a significant gap for a tool with zero schema descriptions.
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 clear verb and resource: 'Build the shareable journal card for one of YOUR decisions.' It also adds limiting context like 'free read' and 'no amounts and no percentages,' which clarifies the intent. However, it does not explicitly differentiate the tool from the sibling 'share_journal_card' and actually names that sibling in its workflow, so the agent cannot be fully certain where the boundary between 'get' and 'share' is.
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 some usable context: it should be used after 'journal_append / journal_query,' and the resulting card is a process record rather than a claim about results. But it does not explicitly say when not to use the tool, and the workflow sentence says 'then share_journal_card to get the pre-filled post,' which appears to point at a sibling instead of the tool itself. This makes the usage guidance ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leaderboardARead-onlyIdempotentInspect
Top published strategies ranked by a verified backtest metric (free).
Crypto-only -- equity templates excluded. sort in sharpe|return| sortino|win_rate|drawdown|clones (default sharpe). Each entry carries factual backtest metrics + the on-chain attestation hash; no return promises (rule 8). detail="concise" (default) trims each entry the same way as discover_strategies (template_id is the ID to chain into clone_strategy); "full" returns every field.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | sharpe | |
| limit | No | ||
| detail | No | concise | |
| caller_id | No | ||
| strategy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing meaningful behavioral traits: entries carry factual backtest metrics and a verification hash, no return promises are made due to rule 8, the 'concise' detail trimming behavior, and the fact that the result includes a template_id to chain into clone_strategy. This enriches the readOnly/idempotent annotation context substantially.
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 compact and front-loaded with the core purpose before enumerating options. Each sentence contributes a specific constraint or behavior, from 'Crypto-only' to 'no return promises' to the detail mode semantics. The formatting is a bit dense but not wasteful.
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 tool with an output schema and all-optional parameters, the description covers core invocation needs: defaults, sort values, and detail modes are provided. The remaining gaps are primarily around limit semantics and strategy_type, but the tool can be reasonably invoked with zero parameters.
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. It does helpfully spell out sort options, defaults, and the detail=concise vs full behavior. However, limit, caller_id, and strategy_type are not explained beyond their names, leaving meaningful ambiguity for the caller.
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 verb and resource: it is a leaderboard of top published strategies ranked by a verified backtest metric. It also adds a differentiating constraint, 'Crypto-only -- equity templates excluded,' and names the default sort. However, it does not explicitly distinguish itself from siblings like get_strategy_leaderboard or get_score_leaderboard, so it falls short of a 5.
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 contextual guidance: it is for crypto published strategies, excludes equity templates, and is free. It also explains how the detail parameter relates to discover_strategies and clone_strategy. It does not explicitly name alternative leaderboard tools or give a direct 'when not to use' rule beyond the equity exclusion, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lending_ratesARead-onlyIdempotentInspect
Compare supply/borrow rates across Kamino + Marginfi.
Each row: protocol, token mint, symbol, supply/borrow APY %, TVL USD, utilization. detail="concise" (default) drops tvl_usd/utilization (token is the ID to chain into lend_deposit); "full" returns every field.
Workflow: YIELDS step -- the passive-return option for idle/low-conviction capital (lending USDC removes price exposure). Pairs with get_lst_yields. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | concise | |
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already tell the agent this is read-only, idempotent, and safe. The description adds meaningful behavior beyond that: it explains what fields appear depending on detail, identifies the token field as a chaining ID for lend_deposit, and frames lending as a passive-return strategy. This is solid supplementary context for an already well-protected tool.
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?
Four compact sentences: purpose, row structure, per-parameter detail behavior, and workflow context. Every sentence adds information, and the main purpose is front-loaded. No filler 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?
Given there is an output schema and all annotations declare a safe read-only operation, the description covers the essential remaining context: what data is returned, how detail changes the payload, downstream chaining via token, and fit within the workflow. Nothing crucial is missing for selection and invocation.
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. It explains detail='concise' vs 'full' and the exact fields dropped, which goes well beyond the bare schema. caller_id is not described, but it is optional and its name is self-explanatory, so this is a minor gap rather than a blocking one.
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 specific verb-resource pair: 'Compare supply/borrow rates across Kamino + Marginfi.' It also lists exactly which fields each row contains, and it explicitly related to get_lst_yields, making the tool's role in the toolset clear.
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 places this in a workflow ('YIELDS step -- the passive-return option for idle/low-conviction capital') and names related tools (get_lst_yields, get_trading_workflow), which provides strong contextual guidance. It doesn't explicitly state 'when not to use' or the exact decision rule between lending and other yield options, so I'd not give a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lst_yieldsARead-onlyIdempotentInspect
Compare APY across LST providers (Marinade/Jito/Blaze) with MEV-boost + validator-count descriptors.
Workflow: YIELDS step -- staking keeps SOL exposure + earns yield (vs lending, which removes price exposure). Best APY becomes the 'park it' leg of the allocation; execute via liquid_stake. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds that the tool compares APY and mentions descriptors, aligning with annotations. 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?
Extremely concise with front-loaded purpose and workflow integration. 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?
Adequately covers functionality and workflow for a read-only tool with output schema. Minor omission of parameter detail but overall sufficient.
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?
Only parameter caller_id is not described in text, and schema description coverage is 0%. Parameter is optional with default, but description should at least mention its purpose.
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?
Clearly states the tool compares APY across LST providers (Marinade/Jito/Blaze) with descriptors like MEV-boost and validator-count, distinguishing it from sibling tools like get_lending_rates or liquid_stake.
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?
Provides workflow context: positions this as a 'YIELDS step' contrasting staking vs lending, and guides to execute via liquid_stake. Lacks explicit exclusions but gives clear usage scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_briefingARead-onlyIdempotentInspect
Crypto market briefing synthesised from free public sources (tiered).
Returns a market briefing aggregated from free crypto data sources (Coin Bureau,
DeFiLlama, the alternative.me Fear & Greed index) plus classified sentiment
signals: market summary, top movers / most-discussed assets, sentiment regime,
the Fear & Greed reading, and source attribution. assets is an optional list of
tickers (e.g. ["BTC","SOL"]); for paid tiers it declares the agent's holdings and
focuses the synthesis. detail_level: "free" returns the pre-generated daily Free
briefing (metered at $0, quota'd per day); "pro" ($0.25) and "platinum" ($0.50)
return real-time Sonnet/Opus synthesis personalised to the wallet's portfolio +
active strategies. Paid tiers are covered by an active $CRANK-staker subscription
or require a verified x402 payment_header (PAYMENT_REQUIRED otherwise). The billing
outcome is in the response billing field. Not financial advice.
detail (payload shape -- NOT the pricing tier, that's
detail_level above): "concise" (default) drops the long content
body + model_used/source_count, keeping the summary, sentiment
regime, Fear & Greed reading, covered assets, and strategy_connections
(IDs for chaining into a strategy tool) plus the billing outcome;
"full" returns every field exactly as before, including content.
Workflow: INTELLIGENCE step (usually first) -- macro/sentiment context that frames detect_regime + the allocation. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | ||
| detail | No | concise | |
| caller_id | No | ||
| timeframe | No | 24h | |
| detail_level | No | free | |
| payment_header | No | ||
| wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses cost per tier, daily free quota, the need for an active subscription or x402 payment_header, the PAYMENT_REQUIRED error case, and the billing outcome in the response. It also clearly separates the pricing tier (detail_level) from the response shape (detail).
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 long but organized: overview, source sources, parameter meanings, pricing, and workflow. It front-loads the core outcome before going into details. The dense parentheticals are hard to scan, but every sentence contributes real 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 tool with pricing tiers, required payment mechanisms, and multiple detail modes, the description covers the critical decision points: cost, subscription, response shape, billing outcome, and workflow placement. An output schema exists, so lack of full return-value listing is acceptable; the main completeness gap is the missing behavior of the timeframe parameter and caller_id.
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 descriptions are absent (0% coverage), and the prose partially compensates by explaining assets, detail_level, detail, payment_header, and wallet-related focus. However, timeframe and caller_id are not explained at all, so an agent still cannot fully interpret all parameters from the text.
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 resource ('crypto market briefing'), a clear verb ('Returns'), and the intended content (market summary, sentiment regime, Fear & Greed reading, source attribution). It also differentiates the tool from the large sibling set by positioning it as the 'INTELLIGENCE step' that frames detect_regime and allocation.
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 gives explicit workflow guidance: 'INTELLIGENCE step (usually first)' and points to get_trading_workflow for broader context. It also explains when to choose 'free', 'pro', or 'platinum' detail levels, so an agent can decide based on cost and need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_regimeARead-onlyIdempotentInspect
Market-wide regime from the persisted regime/macro signal feed (free read).
Returns the dominant regime, its confidence, a distribution across observed
regimes, and the contributing signals. For a live per-asset regime computed
from OHLCV, use detect_regime instead. Descriptive observed data only.
Not financial advice.
Workflow: INTELLIGENCE step -- market-wide posture check before choosing a strategy type or direction_mode; pair with detect_regime for the asset leg.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No | ||
| window_hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive; description adds value by stating it's a 'free read', 'descriptive observed data only', and lists returned fields (dominant regime, confidence, distribution, signals). 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?
Description is reasonably concise with clear sentences, though it could be more front-loaded. It includes purpose, contrast, returns, disclaimer, and workflow without excessive verbosity.
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 tool with output schema, the description adequately describes returns and workflow context. Covers all key aspects needed for an agent to decide to use it and interpret results.
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% but description provides no information about the three parameters (limit, caller_id, window_hours) or how they affect the output. Parameters have defaults but meaning is entirely implied.
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?
Description clearly states it retrieves a market-wide regime from a persisted feed, and explicitly contrasts with `detect_regime` for live per-asset regime, establishing unique purpose.
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?
Explicitly says when to use (market-wide posture check) and when not (use `detect_regime` for per-asset), and provides workflow guidance for pairing with `detect_regime`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ml_signalARead-onlyIdempotentInspect
ML ensemble directional forecast for a Solana asset (read-only).
Trains the ported Bybit ensemble (XGBoost + RandomForest + NeuralNet + GradientBoost + a candle flow proxy) walk-forward on the last lookback_candles of OHLCV, then returns the blended P(up move) for the latest candle: score in [0,1], confidence (distance from 0.5), direction (long/short/neutral via buy_threshold/sell_threshold), per-model contributions and top feature importances. asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d; horizon is the forward-return label horizon in candles. On spot, 'short' = exit-to-flat (no native short). Heuristic forecast from price history only -- not financial advice. No wallet, no fee, no on-chain action.
Workflow: INTELLIGENCE step -- a directional forecast that complements detect_regime; low confidence -> cut size or stay flat. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| horizon | No | ||
| caller_id | No | ||
| timeframe | No | 1h | |
| buy_threshold | No | ||
| sell_threshold | No | ||
| lookback_candles | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. The description reinforces read-only nature, states 'no wallet, no fee, no on-chain action', and adds details like the special meaning of 'short' on spot, and that it is heuristic, not financial advice. This goes 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 front-loaded with the key purpose and is well-structured with paragraphs. It covers purpose, parameters, output, workflow, and disclaimers. While comprehensive, it is slightly long and could be tightened without losing clarity.
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 complexity of an ensemble ML tool with 7 parameters and no input schema descriptions, the description fully covers the what, how, when, and output details. It includes workflow integration, edge cases (short on spot), and disclaimers. The output schema existence further supports 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?
With 0% schema description coverage, the description explains most parameters: asset as token mint, timeframe as one of 1m/5m/15m/1h/4h/1d, horizon as forward-return label horizon, buy_threshold/sell_threshold for direction thresholds, lookback_candles for training window. Only caller_id is not explained, which is a minor gap.
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 'ML ensemble directional forecast for a Solana asset (read-only)'. It specifies the tool generates a blended P(up move) score, confidence, direction, per-model contributions, and feature importances. It distinguishes itself from siblings like 'detect_regime' and 'get_signals' by being a directional forecast that complements regime detection.
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 workflow context: 'INTELLIGENCE step -- a directional forecast that complements detect_regime; low confidence -> cut size or stay flat.' It also mentions 'See get_trading_workflow' for more context. However, it does not explicitly state when not to use this tool versus alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_contribution_scoreARead-onlyIdempotentInspect
Your own hive contribution score for a monthly epoch (free read).
Wallet-scoped -- returns ONLY your wallet's own row, never another
wallet's score and never a fleet ranking. epoch is "YYYY-MM" and
defaults to the most recently completed month.
Contribution quality reflects how much your journaled decisions
genuinely improved the collective intelligence pool: accurate,
verifiable, original contributions score well; copies and noise do
not. flags explains a zero score, e.g. below the activation
threshold or no on-chain-verified outcome.
Any recognition of contribution quality from the Community Rewards Pool is discretionary, retroactive and effort-gated -- never a yield, a return, an earn-rate, or a promise of a future allocation.
Workflow: REVIEW step -- read alongside get_my_performance to see how your journalling habits, not just your P&L, land with the network.
| Name | Required | Description | Default |
|---|---|---|---|
| epoch | No | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds valuable context beyond that: epoch defaulting, strict wallet scoping, what flags mean for zero scores, and the caveat that rewards are discretionary, retroactive, and not a financial return. 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?
The description is front-loaded with the core result and scope, then moves efficiently into epoch semantics, zero-score interpretation, reward disclaimers, and workflow context. Every sentence adds value and the structure is scannable despite the length.
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?
With an output schema present and annotations covering the read-only safety profile, the description supplies the remaining context an agent needs: scope, epoch behavior, flags, reward caveats, and how to pair this with get_my_performance. The minor caller_id omission has limited impact on overall 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?
Schema description coverage is 0%, so the description must compensate for missing parameter docs. It meaningfully explains epoch's "YYYY-MM" format/default and wallet_address through the wallet-scoped constraint, but it never mentions caller_id, leaving one parameter under-explained.
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?
States exactly what the tool returns: the caller's own hive contribution score for a monthly epoch, and explicitly marks it as a free read. It distinguishes itself from score/leaderboard siblings by emphasizing wallet-scoped output that never includes another wallet or fleet ranking.
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 wallet-scoped statement tells the agent when not to use this tool (for another wallet or fleet ranking), and the workflow note situates it alongside get_my_performance for a review step. It does not name a direct alternative for leaderboard-style queries, so guidance is clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_performanceARead-onlyIdempotentInspect
Your own realised performance, grouped (free read).
Aggregates your journaled non-paper outcomes: win rate, total/average realised P&L (USD), and technology-service-fee drag, grouped by strategy_type | asset | decision_type | hour_of_day over window_hours. Includes a calibration score (your stated expectations vs the realised 24h move) when you journal expectations. Historical performance data about your own decisions -- descriptive only, not a recommendation.
Workflow: ORIENT step -- read this before sizing or creating strategies.
| Name | Required | Description | Default |
|---|---|---|---|
| group_by | No | strategy_type | |
| caller_id | No | ||
| window_hours | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only, idempotent, and non-destructive. The description adds valuable behavioral context: it aggregates journaled non-paper outcomes, includes a calibration score when expectations are journaled, and is historical performance data only. It also clarifies it is not a recommendation. This goes beyond the annotations without contradicting them.
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 paragraphs and a final line, front-loading the purpose. It efficiently covers purpose, aggregation details, and workflow hint. No redundant sentences. It earns its place but could be slightly more compact by merging lines.
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 existence of an output schema (presumably documenting return values), the description sufficiently covers input semantics, aggregation dimensions, and workflow guidance. It mentions key metrics and the calibration score. It does not mention data recency or pagination, but these might be in the output schema. Overall, it provides adequate context for a read-only data retrieval tool.
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 compensates somewhat by explaining that grouping can be by strategy_type, asset, decision_type, or hour_of_day over window_hours. It implicitly explains the 'group_by' and 'window_hours' parameters. However, it does not describe 'wallet_address' (though implied by 'your own') or 'caller_id'. The description adds meaning but leaves gaps.
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 retrieves the user's own realised performance, aggregated by various dimensions (strategy_type, asset, decision_type, hour_of_day) over a configurable window. It specifies the metrics included (win rate, P&L, fee drag, calibration score). The phrase 'free read' indicates no cost, and it distinguishes itself from sibling tools by focusing on personal performance data. This gives a specific verb+resource with clear scope.
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 explicitly recommends using this tool in the 'ORIENT step' before sizing or creating strategies, providing a clear usage context. It also notes that the data is 'descriptive only, not a recommendation.' However, it does not mention when to avoid using this tool or list alternative tools for similar purposes, hence a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_pledge_statusARead-onlyIdempotentInspect
Read your own on-chain Pledge record for a launch (free).
Returns how much this wallet has pledged, its share of the raise, its remaining headroom under the per-wallet cap, the projected pro-rata allocation, how much the liquidity release schedule has unlocked vs already released, and whether an on-chain refund is available (refunds open only if the raise FAILS its minimum).
Workflow: MONITOR step -- poll this between the cliff and full release to decide when a claim_ilo_tokens call is worth making.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| launch_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, but the description adds valuable context beyond them: the call is free, refunds are only available when the raise fails its minimum, and it exposes partial unlock state that changes over time. These are exact behavioral expectations an agent needs.
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 front-loaded with the action and embedded with a clear field list and a useful workflow note. Some field enumeration overlaps with what an output schema would provide, but the detail is relevant and clearly organized.
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 that an output schema exists, this description covers the key behavioral context: monitoring role, refund conditions, and the trigger for switching to claim_ilo_tokens. Missing details are the no-pledge edge case and how the agent learns the cliff/release window, but those gaps are minor.
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 compensates fairly well by tying the meaning of launch_id and wallet_address to 'a launch' and 'this wallet' and by introducing the per-wallet cap that the allocation logic depends on. It does not explicitly describe caller_id or provide ID/wallet formats, which keeps it from a 5.
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?
Opening with 'Read your own on-chain Pledge record for a launch' gives a specific verb, resource, and scope. The returned fields—pledge amount, share, cap headroom, pro-rata allocation, release schedule, refund availability—make the tool's purpose concrete and distinct from related ILO/claim siblings.
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 'Workflow: MONITOR step' sentence tells the agent to poll this between cliff and full release in order to decide when a claim_ilo_tokens call is worth making. That gives clear usage context and names the relevant alternative, though it doesn't explicitly enumerate when to prefer other read-only siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_onramp_statusBRead-onlyIdempotentInspect
Check a pending MoonPay purchase by session_id.
Returns status (pending/processing/completed/failed), amount_crypto, and the on-chain tx_signature once settled.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and no destruction. The description adds value by specifying the return fields and that it queries by session_id, but does not disclose potential behavioral traits like rate limits or data freshness. It does not contradict 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, immediately stating the purpose and then the return fields. It is concise, front-loaded, and contains no unnecessary 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?
Given the presence of an output schema (not shown), the description provides enough context for the main parameter and return fields. However, it lacks explanation for the caller_id parameter and does not set expectations for edge cases or error handling, making it minimally adequate.
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 compensate. It explains session_id as the identifier, but fails to mention caller_id's purpose or allowed values. This is insufficient for a 2-parameter tool with no schema descriptions.
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 ('Check a pending MoonPay purchase'), the resource ('MoonPay purchase'), the identifier ('session_id'), and lists specific return fields ('status, amount_crypto, tx_signature'). This is specific and distinguishes it from 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 does not provide any guidance on when to use this tool versus alternatives, when not to use it, or any prerequisites. It only states the operation without contextualizing usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ooda_statusARead-onlyIdempotentInspect
Wake-on-condition consent + usage status.
Returns opted_in, daily_wake_budget, wakes_used_today, skips_today, and recent_wakes -- including SKIPPED_BUDGET / SKIPPED_SPEND_CAP rows, so a skipped wake is exactly as visible as a completed one, never silent. Also returns the usage-vs-fee-revenue kill threshold config and state: kill_threshold_enabled, kill_threshold_ratio, kill_window_days, and -- if this wallet was auto-killed -- kill_switched_at and kill_reason, so a wallet can see why wakes stopped.
Workflow: status/observe step -- check this to see whether the background worker is watching, and what it did (or skipped) recently.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| recent_limit | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fully covered. The description adds valuable behavioral context beyond annotations by explaining that skipped wakes are included in recent_wakes ('never silent') and detailing the kill-threshold fields and auto-kill reason. This clarifies what data the agent can expect and why, without contradicting any 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 effectively structured: a concise summary line, then a breakdown of returned fields, then a workflow note. It is longer than minimal but every sentence adds meaningful detail. It is front-loaded with the core purpose, making it easy for an agent to scan. No redundant or filler content.
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 thoroughly covers return values and purpose, but it omits parameter semantics entirely and gives only a brief usage context. It doesn't mention error conditions, rate limits, or how recent_limit affects output. While the output schema exists and could cover return details, the parameter gap and lack of explicit alternative guidance leave the description incomplete for an agent to call 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?
The input schema has 0% description coverage, so the description carries the full burden of documenting parameters. However, it mentions none of the three parameters (wallet_address, caller_id, recent_limit). It doesn't explain that recent_limit controls the number of recent_wakes entries, what caller_id is for, or that wallet_address is required. This is a major gap.
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 returns wake-on-condition consent and usage status, enumerating the specific fields (opted_in, daily_wake_budget, wakes_used_today, skips_today, recent_wakes, kill threshold state). The verb 'get' plus the resource 'OODA status' is specific and distinct from related tools like set_ooda_consent, which is about changing consent, not observing it.
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 includes a workflow hint: 'status/observe step -- check this to see whether the background worker is watching, and what it did (or skipped) recently.' This provides clear context for when to use it, but it doesn't explicitly mention alternatives or when not to use it. It names no sibling tools or exclusion conditions, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolio_charterARead-onlyIdempotentInspect
Read the wallet's active portfolio charter -- the CRANK.md-equivalent mandate (free read).
A user-authored document declaring objectives, risk_band, banned tokens, target_allocations, max_position_pct, rebalance cadence, and an escalation webhook -- loaded once per session so the mandate persists across every downstream call instead of being re-supplied ad hoc. has_charter is False when the wallet has not set one yet -- call set_portfolio_charter to create it. Descriptive framing only ("objectives"/"parameters", never return targets, hard rules 5-8).
Workflow: ORIENT step 0 -- read this FIRST, before get_balances / portfolio_snapshot, so every downstream decision is framed by it.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only, idempotent, and non-destructive, and the description adds value by explaining the 'loaded once per session' persistence, the has_charter False edge case, and the free-read nature. No contradictions 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?
The description is front-loaded with a strong first sentence. It is detailed than a simple getter strictly needs, and the 'CRANK.md-equivalent' and 'hard rules 5–8' jargon adds some noise, but every major section earns its place operationally.
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?
Covers invocation order, when the charter doesn't exist, session persistence, and next steps, while the annotations and output schema carry the safety and return-value details. Nothing essential is missing for calling this tool 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?
The input schema has 0% description coverage, and the description refers only obliquely to the wallet via 'the wallet's active portfolio charter'. It clarifies that wallet_address identifies the wallet, but it does not explain the optional caller_id parameter. Acceptable given the one required, self-descriptive parameter.
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?
States a specific verb ('Read') and a clear resource ('the wallet's active portfolio charter'), and defines the charter as a CRANK.md-equivalent mandate. It distinguishes itself from set_portfolio_charter and downstream read calls like get_balances and portfolio_snapshot.
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?
Explicitly instructs the agent to read this FIRST in the ORIENT step and before get_balances / portfolio_snapshot, which is concrete placement in a workflow. It also names set_portfolio_charter as the creation action when has_charter is False.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_questsBRead-onlyIdempotentInspect
Live Crank Score quests + a wallet's progress (FREE read).
Time-bounded, admin-configured campaigns (e.g. "Trade $1000 this week = 500
pts"). Each quest carries its tracked costly metric, target_value,
reward_points, the active window, and -- when wallet_address is given --
the wallet's progress_value + completion state. Carries the disclaimer.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful context: quests are time-bounded admin-configured campaigns, returning metric/target/reward/window fields, wallet progress when wallet_address is supplied, and a disclaimer. 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?
The main purpose is front-loaded and the supporting detail is compact. It uses a few dense sentences without padding or unnecessary 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?
With an output schema and safety annotations, the main missing piece is caller_id semantics. The description covers the core behavior and the optional wallet_address path, making it adequate but not fully 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?
The schema has 0% description coverage, so the description must carry parameter meaning. It explains wallet_address's effect (adds progress_value and completion state) but never mentions caller_id, leaving that parameter's purpose to inference from its name alone.
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 identifies the resource as 'Crank Score quests' and notes optional wallet progress, so an agent can distinguish it from get_crank_score and other get_* siblings. It lacks an explicit verb, relying on the tool name and 'FREE read', but the intended operation is clear.
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 alternative tools or exclusion conditions are stated. The description implies this is for quest/progress data and explains the wallet_address condition, but it does not say when to prefer this over siblings like get_crank_score or get_leaderboard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quotesARead-onlyIdempotentInspect
Read-only Jupiter quote for a token pair (no execution).
amount is in base units of input_token. Returns routes, price impact, fees,
and estimated output. venue_hint
is ADVISORY, never required -- see jupiter_swap.
Pass wallet_address (optional) to preview the DISCOUNTED
technology service fee that wallet will actually pay -- its volume tier plus
$CRANK staker / pay_in_crank / Crank Score discounts. Omit it for the
base rate. This stays a free read either way.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| caller_id | No | ||
| venue_hint | No | ||
| input_token | Yes | ||
| output_token | Yes | ||
| pay_in_crank | No | ||
| slippage_bps | No | ||
| wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's 'Read-only' and 'stays a free read' reinforce but also extend the annotations. It adds meaningful behavioral detail: the fee discount logic tied to wallet_address, volume tier, and $CRANK staker discounts, which is beyond the annotation scope.
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 front-loaded with the core purpose, then expands on key parameters. It is detailed but not bloated; each sentence adds value, though it could be tightened (e.g., 'stays a free read either way' is slightly redundant but reinforces safety).
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 an output schema exists (so return format is covered) and annotations cover safety, the description provides sufficient context for correct usage: amount unit, venue_hint advisory, and wallet_address fee behavior. It omits details on slippage_bps and pay_in_crank, but these are less critical and likely have defaults. Overall, a solidly complete 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?
Schema description coverage is 0%, so the description must compensate. It explains amount is in base units of input_token, venue_hint is advisory, and wallet_address enables discounted fee preview. It does not explain slippage_bps, pay_in_crank, or caller_id, but covers the most impactful parameters for agent use.
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 explicitly states 'Read-only Jupiter quote for a token pair (no execution)' — a specific verb (quote), resource (Jupiter token pair), and scope (read-only, no execution). It also references jupiter_swap as the execution counterpart, clearly differentiating the tool.
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 explains when to use this tool (for a quote, not execution) by contrasting with jupiter_swap. It also clarifies optional parameters like wallet_address for discounted fee preview and venue_hint as advisory. However, it doesn't explicitly list alternative quote tools or state 'use this when you only need a quote', but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regulatory_updatesARead-onlyIdempotentInspect
Recent regulatory statements affecting Crank's scope (free read).
Returns SEC / CFTC / FinCEN press releases and rule proposals from a scheduled daily
scan, LLM-classified for relevance to Crank: DeFi, crypto perps, tokenized equities,
autonomous agent trading, and non-custodial custody. Each update carries the issuing
agency, title, url, relevance (high/medium/low) + score, matched topics,
and a one-line factual summary; results are ranked by relevance then recency.
window_hours bounds the lookback (default 168 = 7 days, capped at 720 = 30 days);
min_relevance filters by floor (high/medium/low); agency optionally narrows to one
body (SEC, CFTC, FinCEN). Relevance is a compliance-triage signal, not legal advice.
Not financial advice.
Workflow: INTELLIGENCE / COMPLIANCE step -- check the current regulatory posture around perps, tokenized equities, or agent trading before acting on a strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| agency | No | ||
| caller_id | No | ||
| window_hours | No | ||
| min_relevance | No | low |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint, openWorldHint, idempotentHint all true, destructiveHint false), so the description starts at an advantage. It meaningfully adds context: the 'scheduled daily scan,' LLM-classification pipeline, ranking scheme, and frank disclosures that relevance is 'a compliance-triage signal, not legal advice.' Together these give the agent an accurate mental model of data origin and limitations.
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?
Front-loaded with the most important fact in sentence one, then moves logically from purpose → return shape → parameters → disclaimers → workflow. Dense but not padded; the parentheticals '(free read)', '(default 168 = 7 days…)', and trailing 'Not financial advice.' are short and load-bearing. A very minor amount of redundancy between the opening scope list and the workflow section keeps this from a 5.
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 tool with no required parameters, an output schema, and four modest params, the description is complete: input semantics, output shape and ordering, use-case context, and disclaimers are all present. Rate limits, error conditions, and pagination are not mentioned, but those are minor given the described read-only, capped-lookback semantics.
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 a stark 0%, so the description carries the full burden — and nails it. It documents window_hours with units, default, and cap (168=7 days, capped at 720=30 days); min_relevance accepted values; agency options (SEC, CFTC, FinCEN); and the exact output fields ('relevance (high/medium/low) + score, matched topics, one-line factual summary'). Only caller_id isn't spelled out, but it's self-evidently a housekeeping param.
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?
Opens with a precise verb+resource statement: 'Recent regulatory statements affecting Crank's scope' followed by explicit examples of what is returned (SEC/CFTC/FinCEN press releases, rule proposals). The description differentiates this from the similarly-named sibling get_technology_updates by scoping to regulators (SEC/CFTC/FinCEN), topics (DeFi, perps, tokenized equities), and classification criteria.
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?
Ends with an explicit workflow directive: 'check the current regulatory posture around perps, tokenized equities, or agent trading before acting on a strategy,' which tells the agent when to invoke it. However, it doesn't name alternative tools or explicitly state when NOT to use this one, relying on siblings section to imply the choices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_risk_assessmentARead-onlyIdempotentInspect
Combined regime + risk-guard calculation for a strategy on an asset (read-only).
Folds the detected market regime together with the safe-default risk guards
(position / exposure / single-loss / drawdown / daily-loss limits) into one
deterministic output: a rules-based direction, a conviction-weighted position
size already capped to the position guard (in both percent-of-equity and USD
notional against equity), a per-regime action note, and the full guard
set. strategy_type is one of the 16 Crank strategy types; asset is a token
mint; timeframe one of 1m/5m/15m/1h/4h/1d. A mechanical, non-personalised
calculation you choose whether to act on (DYOR) -- not financial advice, not
a recommendation, and not a managed account. No wallet, no fee.
Workflow: RISK step -- after backtest_strategy, before execution. The returned suggested_size_usd caps the order in the execute phase; do NOT exceed it. Check asset_classification first (equity -> per-execution confirm). See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| equity | No | ||
| caller_id | No | ||
| timeframe | No | 1h | |
| strategy_type | Yes | ||
| lookback_candles | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial context beyond the annotations (readOnlyHint, idempotentHint). It states the calculation is deterministic, non-personalised, does not involve a wallet or fee, and is 'not financial advice'. It discloses that the returned suggested_size_usd caps the order in the execute phase, which is critical for safe usage. These details go well beyond the structured hints and align with them perfectly.
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 dense but every sentence earns its place: it opens with a one-line summary, then details inputs, outputs, safety caveats, and workflow in a structured, scannable way. The 'No wallet, no fee' and 'DYOR' notes are valuable for setting expectations. It is front-loaded with purpose and never meanders.
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 complex tool with 6 parameters and an output schema, the description covers the essential behavioral context: what the tool returns, how it should be used, prerequisites ('Check asset_classification first'), and constraints ('do NOT exceed [suggested_size_usd]'). It also names the workflow stage, making the tool fully actionable without needing to inspect external docs.
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 schema provides no parameter descriptions (0% coverage), so the description must compensate. It explains strategy_type as one of the 16 Crank types, asset as a token mint, timeframe as one of 1m/5m/15m/1h/4h/1d, and references equity as the base for USD notional. However, lookback_candles and caller_id are not explained, leaving a small but notable semantic gap for those 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 clearly identifies the tool as a combined market regime and risk-guard calculation for a strategy on an asset, explicitly marking it as read-only. It distinguishes itself from siblings like get_token_risk_assessment by describing its unique function of folding risk guards into a single output, and it names related workflow tools (backtest_strategy, asset_classification, get_trading_workflow). The verb 'calculate' and the resource (strategy/asset risk assessment) are 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 explicit placement in a workflow: 'after backtest_strategy, before execution' and instructs to 'Check asset_classification first'. It also warns against exceeding the suggested_size_usd and references get_trading_workflow for broader context. This gives clear when-to-use and what-to-check-before-use guidance, fully differentiating it from related risk tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scoreARead-onlyIdempotentInspect
User-facing Crank Score: rank, multiplier, metrics + quests (FREE).
The campaign-layer view on top of get_crank_score. Returns total_score,
leaderboard rank + percentile, the applied multiplier_bps (streak /
early-adopter / strategy-creator), the wallet's costly-action metrics
(fee_volume_usd, strategies_published, clones_spawned, referrals_activated,
active_days), and its live quests with progress. Points come ONLY from
costly actions (anti-farm). disclaimer: score MAY inform a future token
distribution -- no fixed conversion ratio, no entitlement.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides detailed behavioral information beyond the annotations: it enumerates the exact components returned (total_score, rank, multiplier, metrics, quests), explains that points come only from costly actions, and includes a disclaimer about future token distribution. This fully discloses what the tool does and its implications.
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 moderately long but well-structured with clear lists and colons. It packs a lot of useful information without excessive verbosity, though it could be slightly more concise by trimming redundant phrases like 'campaign-layer view' and 'anti-farm'.
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 is complete enough for an agent to understand what the tool returns and its context. It covers output components, the underlying score derivation, and the disclaimer. Even though the output schema is not shown, the description compensates by explicitly listing the return fields.
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 schema provides no descriptions for the parameters, and the description does not clarify them either. The wallet_address parameter is self-explanatory, but caller_id is ambiguous and not explained. Since schema coverage is low, the description fails to compensate, leaving parameter meaning insufficient.
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 purpose: it is a user-facing score view that returns rank, multiplier, metrics, and quests. It distinguishes itself from the underlying get_crank_score by labeling itself as 'user-facing' and 'campaign-layer view', making its role 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 implicitly indicates when to use this tool (when a user-facing, campaign-level score is needed) versus the lower-level get_crank_score. However, it does not explicitly contrast with other related tools like get_score_leaderboard or get_my_contribution_score, though the naming and context make the choice reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_score_leaderboardARead-onlyIdempotentInspect
Top-N Crank Score leaderboard (FREE read).
Ranked descending by total_score. limit caps at the admin-configured
leaderboard_size. Each entry: rank, wallet_address, total_score, the
base/action/quest components, multiplier_bps, streak_days, percentile. Also
returns total_participants and the pre-token disclaimer. (Distinct from
get_leaderboard, which ranks strategy templates.)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds behavioral context beyond that: it specifies the ranking order, describes the exact fields returned (rank, wallet_address, total_score, components, etc.), mentions the pre-token disclaimer, and notes the limit cap. This is useful context that assists an agent in understanding the tool's behavior without redundancy.
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 plus a parenthetical, extremely concise and highly informative. The key facts are front-loaded: 'Top-N Crank Score leaderboard (FREE read)' immediately gives the purpose and cost. Every sentence adds new information: ranking, fields, disclaimer, and the sibling distinction. No filler words or redundancy.
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 that an output schema exists (has output schema: true), the description doesn't need to repeat return types, but it still lists all the fields that will be included, which is helpful. It explains the limit cap, the ordering, and the distinction from the sibling. The only minor gap is the `caller_id` parameter, but since the tool has no required parameters and is a read operation, the description is essentially complete for an agent to call 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?
Schema coverage is 0%, so the description must fully explain parameters. It does explain `limit` clearly: it caps at the admin-configured leaderboard_size, which adds meaning beyond the schema's bare type. However, it entirely omits `caller_id`, leaving that parameter's purpose and usage unexplained. Since one of two parameters is undocumented, the description only partially compensates for the lack of schema coverage, so a 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 states a specific verb and resource: 'Top-N Crank Score leaderboard'. It clearly identifies what is being retrieved (leaderboard of Crank Scores) and the key ordering (descending by total_score). It also distinguishes itself from get_leaderboard, which ranks strategy templates, so an agent can immediately recognize this tool's unique purpose.
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 explicit guidance: it says it's a FREE read, meaning no cost or side effects. It also states that `limit` caps at the admin-configured leaderboard_size, setting expectations for the parameter's behavior. Most importantly, it explicitly differentiates from get_leaderboard, telling the agent when NOT to use this tool (for strategy templates). This is explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signal_effectivenessARead-onlyIdempotentInspect
Fleet action-conditioned signal effectiveness (free read).
Filters: source_type (e.g. youtube/rss/api/on_chain), signal_type, window (24h|7d|30d|90d|all). Returns, per matching signal_effectiveness collective insight, the fleet action taken, effect_size, confidence interval, contributing-agent count n, crowding_index, and staleness. Historical collective performance data aggregated across the fleet -- descriptive only, never a recommendation or a promise of results.
Workflow: INTELLIGENCE step -- weigh a signal by how the FLEET's actions on it have historically resolved, alongside your own get_source_accuracy / get_my_performance track record.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | 30d | |
| caller_id | No | ||
| signal_type | No | ||
| source_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint, idempotentHint, openWorldHint, and destructiveHint all present, the description adds material behavior: it is a 'free read,' is 'descriptive only,' historical/aggregated, and makes 'never a recommendation or promise of results.' It also discloses the return semantics (effect size, confidence interval, n, crowding, staleness) beyond 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 compact, front-loaded with the core purpose, and organized into Filter / Returns / Semantics / Workflow segments. Every sentence carries information; none is 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?
Given the tool is a read-only analytics lookup with all-optional parameters, the description covers filters, output content, interpretation caveats, and the workflow context in which it should be invoked. Nothing an agent needs to choose and call it correctly is missing.
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 schema itself has 0% description coverage, but the description compensates by spelling out source_type (with examples), signal_type, and window (with an explicit 24h|7d|30d|90d|all enumeration). Only caller_id is left unexplained, and signal_type gets no example values, so it is not a perfect 5.
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?
Description opens with a specific verb+resource framing ('Fleet action-conditioned signal effectiveness') and enumerates both the filters and the exact fields returned, so an agent knows exactly what the tool computes. It also distinguishes itself from nearby analytics tools by referencing the fleet's historical actions and explicitly disclaiming recommendation semantics.
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 'Workflow: INTELLIGENCE step' line tells the agent when to use this tool: weigh a signal by fleet-historical resolution alongside personal accuracy/performance. It does not name an alternative for when not to use it, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signalsARead-onlyIdempotentInspect
Filtered, most-recent-first feed of structured market signals (free read).
The observed-signal data spine: squeeze / flow / technical / microstructure /
behavioral / liquidity / safety / whale / regime / macro / oracle / event /
composite signals persisted by the collectors. subject matches a token
symbol/market or its stable ref (mint / market address); signal_type /
tier (a|b|c) / risk_level (none..critical) / min_score narrow the
feed. Unknown filter values are dropped, not errored. Descriptive observed
data only -- never a trade instruction. Not financial advice.
Workflow: INTELLIGENCE step -- pair with get_market_briefing (macro) and get_token_risk_assessment (per-token safety roll-up) before sizing.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | ||
| limit | No | ||
| subject | No | ||
| caller_id | No | ||
| min_score | No | ||
| risk_level | No | ||
| signal_type | No | ||
| include_expired | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds value by stating 'Unknown filter values are dropped, not errored' and 'Descriptive observed data only -- never a trade instruction'. No contradictions 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?
The description is front-loaded with the main purpose, then details, then workflow. It is not overly verbose, but the middle section listing signal types could be slightly more concise.
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 complexity (8 params, numerous siblings, output schema exists), the description covers the tool's purpose, filtering behavior, and workflow context adequately. It could explain more parameters and handling of include_expired, but overall it is complete enough for effective use.
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 compensate. It explains subject, signal_type, tier, risk_level, and min_score, but omits limit, caller_id, include_expired. It adds enum-like details for tier and risk_level that are not in the schema, partially filling the gap.
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 is a 'Filtered, most-recent-first feed of structured market signals (free read)' and enumerates the signal types, leaving no ambiguity about what the tool does. It differentiates from sibling signals tools by listing its comprehensive signal spine.
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 a workflow recommendation: 'pair with get_market_briefing and get_token_risk_assessment before sizing', indicating when to use it. However, it does not explicitly mention when not to use it or alternatives among the many signal-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_social_sendsBRead-onlyIdempotentInspect
A wallet's social token sends (newest first; no claim-code secrets).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds useful context: newest-first ordering and the absence of claim-code secrets, which goes beyond annotations without contradicting them.
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, well-crafted sentence that immediately conveys the tool's purpose, ordering, and a notable constraint. Every word adds value, with no redundancy or 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?
With an output schema present, return values are covered. However, the description omits details about pagination, limits, or the optional caller_id parameter, leaving some gaps for an agent to navigate.
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 the description only implicitly clarifies 'wallet_address' (the wallet in question). The 'caller_id' parameter is left unexplained, and neither parameter receives any format or usage notes.
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 gets social token sends for a wallet, with ordering (newest first) and a caveat about no claim-code secrets. However, it does not explicitly distinguish from siblings like 'bulk_send_social' or 'send_token_social', relying on the name for 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?
No explicit guidance on when to use this tool versus alternatives. The description does not list related tools or conditions for use, leaving the agent to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_accuracyARead-onlyIdempotentInspect
Historical directional hit-rate of each intelligence source (free read).
Returns per-source accuracy stats for the intelligence signal sources (Coin
Bureau / YouTube, RSS, Fear & Greed API, on-chain), so an agent can weight a
source's calls by how often its bullish/bearish reads have played out. Each
source carries a windows map over rolling 7d/30d/90d periods, each with
total resolved calls, correct/incorrect counts, and accuracy_pct; sources with
no resolved calls yet are omitted, and results are ranked by longest-window
accuracy. windows optionally narrows the periods (subset of [7,30,90]);
source_type optionally filters by source kind (youtube, rss, api, on_chain).
Accuracy = the directional call vs the realised Birdeye price over the
prediction window. Past accuracy is not a guarantee. Not financial advice.
Workflow: INTELLIGENCE step -- pair with get_market_briefing to discount or trust a signal by its source's track record before sizing a position.
| Name | Required | Description | Default |
|---|---|---|---|
| windows | No | ||
| caller_id | No | ||
| source_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive. The description adds behavioral details: sources with no resolved calls are omitted, results are ranked by longest-window accuracy, accuracy calculation method, and disclaimers about past performance. 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?
The description is clear and well-structured: purpose statement, detailed explanation of output structure, parameter descriptions, and workflow guidance. It is somewhat lengthy but each part adds value, so not wasteful.
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 explains the output structure in detail (windows map, periods, counts, accuracy_pct) despite an output schema existing. It covers parameter effects and behavioral nuances. Only minor gap: 'caller_id' not elaborated, but it's a common optional field.
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%, but the description explains 'windows' (subset of [7,30,90]) and 'source_type' (youtube, rss, api, on_chain). The 'caller_id' parameter is not explained, but it appears to be a standard identifier with default empty.
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 'Historical directional hit-rate of each intelligence source' and elaborates with per-source accuracy stats. It distinguishes itself from sibling tools like get_signals or get_source_weights by focusing specifically on historical accuracy.
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 explicit workflow guidance: 'Workflow: INTELLIGENCE step -- pair with get_market_briefing to discount or trust a signal by its source's track record before sizing a position.' It also mentions it's a free read, indicating no cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_weightsARead-onlyIdempotentInspect
Source-effectiveness weight table (free read).
Per (source, signal_type, regime): graded evaluation counts, the smoothed effectiveness weight (social sources hold a low prior until sufficiently graded -- the anti-gaming cold start), the fleet Layer-2 multiplier from released anonymized fleet insights, and the combined weighted value the composite effectiveness_weighted transform consumes. Historical grading statistics only -- descriptive, never advice. Not financial advice.
Workflow: COMPOSE step -- read alongside list_signal_catalog to pick streams with a real graded track record before authoring a definition.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, open-world, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond those hints: it is a 'free read,' the weight uses a low prior as an anti-gaming cold start, and the data is historical/descriptive only. 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?
The description is dense and well-structured, front-loading the free-read nature before detailing the table's contents and workflow. The phrase 'Not financial advice' is redundant with 'never advice' and could be trimmed, but overall every other sentence earns its place.
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 zero-required-parameter read tool with an output schema, the description covers the returned fields, the anti-gaming semantics, the workflow, and the non-advice caveat. The main omission is the role of caller_id, which is optional and therefore low-impact but still technically part of the operation.
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 one optional parameter, caller_id, with 0% schema description coverage and no mention in the tool description. The description does not compensate for the schema gap, leaving the agent to infer what caller_id means. It is optional and plausibly self-explanatory as a tracking identifier, but the description adds zero value for this parameter.
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 it returns a source-effectiveness weight table and enumerates the specific dimensions and fields: per (source, signal_type, regime), graded counts, smoothed weight, fleet Layer-2 multiplier, and combined weighted value. It distinguishes itself from siblings like get_signal_effectiveness and get_source_accuracy by explaining the table's role as input to the composite effectiveness_weighted transform.
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: 'read alongside list_signal_catalog to pick streams with a real graded track record before authoring a definition.' It also sets an exclusion boundary with 'descriptive, never advice' and 'Not financial advice,' so an agent knows this is for selection context, not for generating advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_strategy_evolution_reportARead-onlyIdempotentInspect
Clone-marketplace live performance deltas + approvals (free read).
Per published template: its live clone-fleet performance payload (average profit and loss in bps across distinct cloning wallets over the trailing 30 days, anonymized, self-clones excluded), the change vs the previous refresh, and the approval trail for templates that came through the propose-and-approve governance path. A template without enough live clone history reports available=false with a reason -- never a number computed from too few wallets. Draft proposals are never included. Historical data only -- descriptive, never a recommendation or a promise of results.
Workflow: INTELLIGENCE step -- compare marketplace templates on OBSERVED live clone history before cloning one via clone_strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No | ||
| strategy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, open-world, idempotent, and non-destructive. The description adds meaningful behavioral context: anonymized self-clone-excluded data, available=false with a reason rather than low-sample estimates, draft proposals excluded, and historical-only descriptive output. This goes well beyond the annotations and contains 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 information-dense but well structured: a one-line summary, a clear payload definition, data-quality caveats, governance exclusions, and a workflow note. It front-loads the core purpose and every sentence contributes useful selection or invocation 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?
For a read-only intelligence report with an output schema and strong annotations, the description covers what data is included, what is excluded, availability behavior, and the intended workflow before clone_strategy. The main gap is the undocumented input parameters, which is minor given they are all optional and the output schema exists.
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 input schema has 0% description coverage for limit, caller_id, and strategy_type. The description never mentions these parameters or how they affect the report, so it does not compensate for the schema gap. Their names are partially inferable, but no real semantic guidance is provided.
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 verb+resource: get a clone-marketplace live performance and approvals report. It clearly identifies the content (performance deltas, approval trail) and distinguishes itself from cloning by referencing clone_strategy. The purpose is unmistakable even among many similar get_* siblings.
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 explicitly frames the tool as an INTELLIGENCE step before cloning one via clone_strategy, giving an actionable workflow. It does not enumerate exclusions or compare against other strategy-research siblings like get_strategy_leaderboard, but the primary when-to-use guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_strategy_leaderboardARead-onlyIdempotentInspect
Anonymized fleet strategy-parameter leaderboard (free read).
Ranks param_performance collective insights by effect_size within window (24h|7d|30d|90d|all). NEVER identifies a wallet or cohort -- rankings are anonymized param-bucket aggregates only, and any bucket without broad enough backing across the fleet is dropped before it ever reaches this response. Historical collective performance data -- descriptive only, never a recommendation or a promise of results.
Workflow: INTELLIGENCE step -- compare a strategy_type's own parameter choices against fleet-wide observed outcomes before adjusting via suggest_parameter_adjustment / the strategy tools.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | 30d | |
| caller_id | No | ||
| strategy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds substantial behavioral context beyond those: results are anonymized, wallets/cohorts are never identified, insufficiently-backed buckets are dropped, and data is descriptive only, never a recommendation. This goes well beyond the structured 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 front-loaded with the core purpose, then adds constraints, caveats, and workflow guidance. It is appropriately sized for a tool with important privacy and non-recommendation semantics. Minor redundancy exists around the anonymization guarantee, but it earns its place by emphasizing a key constraint.
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 intelligence tool with rich annotations and an output schema, the description covers the purpose, workflow, window options, privacy guarantees, and caveats. The only meaningful gap is the undocumented caller_id parameter and the lack of explicit sibling-tool exclusions, but the overall context is strong.
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 compensate. It does add meaning for window by listing valid values (24h|7d|30d|90d|all) and implies strategy_type's role in comparing parameter choices. However, caller_id is left completely undocumented, leaving one of three parameters 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 names a specific verb and resource: an 'anonymized fleet strategy-parameter leaderboard' that 'ranks param_performance collective insights by effect_size'. This clearly differentiates it from generic leaderboards like get_leaderboard and get_score_leaderboard by focusing on strategy parameters and anonymized fleet aggregates.
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 an explicit workflow: use it as an INTELLIGENCE step to compare a strategy_type's parameter choices against fleet-wide outcomes before adjusting via suggest_parameter_adjustment or strategy tools. It gives clear when-to-use context, though it does not explicitly name alternatives or state when not to use other leaderboard tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_strategy_suggestionsARead-onlyIdempotentInspect
Signal-to-action suggestions from the synthesis engine (free read, G4).
Per-asset directional observations aggregated hourly from the accuracy-
weighted intelligence consensus (get_consensus math) plus the Fear & Greed
context, each carrying a ready-to-use strategy config. PROPOSE flow: this
tool never executes anything -- act on a suggestion by creating the strategy
through the normal strategy tools (your wallet policy and the engine's risk
/ conflict / guardrail gates still apply), or approve it in the app.
status filters proposed|approved|dismissed|executed|expired|all.
Informational descriptions of observed data only. Not financial advice.
Workflow: INTELLIGENCE -> DECIDE step -- review suggestions, then pair with backtest_strategy + get_risk_assessment before any create call.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | ||
| limit | No | ||
| status | No | proposed | |
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive. Description adds workflow context, status filter options, and the explicit statement that it never executes. 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?
The description is well-structured with a clear summary, workflow, and status details. It is front-loaded with key purpose information. Slightly verbose but each sentence 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?
Given the presence of an output schema, the description covers the necessary context: workflow integration, read-only nature, status filtering, and differentiation from sibling execution tools. It is complete for an intelligence-gathering tool.
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 has 0% coverage. Description only explains the 'status' parameter with its enum values. Other parameters (asset, limit, caller_id) are not described, leaving some ambiguity. However, the tool's main filter (status) is well-documented.
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 returns 'signal-to-action suggestions' as a read operation, and explicitly distinguishes from execution tools by saying 'this tool never executes anything'. It provides a specific verb and resource.
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?
Explicitly prescribes when to use ('INTELLIGENCE -> DECIDE step') and which tools to pair with ('backtest_strategy + get_risk_assessment'). Also states that action requires going through normal strategy tools, providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_technology_updatesARead-onlyIdempotentInspect
Recent technology / tooling developments relevant to Crank + Engaij (free read).
Returns items from a scheduled scan of technology feeds (Anthropic, OpenAI, Coinbase
Developer, Solana Foundation, Hacker News filtered, GitHub trending) plus flagged
YouTube tech channels (full transcript ingested), LLM-classified for relevance to both
Crank (Solana trading infra + DeFi frontend) and Engaij (the parent automation
platform). Each update carries category (sdk_release / api_change / competitor /
regulatory / research / tooling), relevance_to_crank and relevance_to_engaij
(high/medium/low/none), a concrete application_recommendation (what to do about
it), title, url, and a one-line summary; results are ranked by relevance then
recency. window_hours bounds the lookback (default 168 = 7 days, capped at 720 = 30
days); min_relevance filters by floor (high/medium/low); category optionally narrows
to one kind. A triage signal, not advice. Not financial advice.
Workflow: INTELLIGENCE step -- scan for SDK / API releases, competitor moves, or tooling worth adopting before planning integration or strategy work.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | ||
| caller_id | No | ||
| window_hours | No | ||
| min_relevance | No | medium |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), and the description adds meaningful context on top: the exact feed sources ingested, the LLM-classification behavior, the ranking logic ('ranked by relevance then recency'), and the important caveat that this is a 'triage signal, not advice.' It also discloses bounded limits (e.g., 720h cap) without contradicting 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 long but every sentence serves a purpose: sources, output shape, ranking, parameters, and workflow guidance. The key summary is front-loaded for rapid triage. The 'Not financial advice' repetition is slightly redundant, but with the tool's complexity (2 companies, 6 categories, 4 parameters), the density is mostly justified.
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 tool with an output schema and rich annotations, the description covers all critical ground: what it returns, how it ranks, parameters, and workflow context. An agent can confidently decide when to call it and what to expect. Minor gaps include lack of explicit prerequisites or rate-limit information, but nothing essential is missing for successful invocation.
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 correctly carries the full burden of parameter documentation and does so thoroughly. It explains window_hours as a bound on lookback with defaults and caps, min_relevance as a filtering floor, and category as an optional narrowing. Since these constitute the entire parameter story, this is exactly what compensation for low coverage looks like.
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 specific, non-tautological statement: 'Recent technology / tooling developments relevant to Crank + Engaij (free read).' It details the exact sources scanned, the classification schema, and the output fields, making it unambiguous what this tool does and distinguishes it from every sibling tool without naming one. An agent would know immediately when this is the right tool.
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 states the workflow placement: 'step -- scan for SDK / API releases, competitor moves, or tooling worth adopting before planning integration or strategy work.' It gives strong contextual guidance on when to use it, though it doesn't explicitly name alternative tools to disambiguate against (e.g., get_regulatory_updates). Clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_classificationARead-onlyIdempotentInspect
Standardised tokenized-stock classification for a mint or symbol.
Read-only. Returns every classification dimension -- backing_status (fully/treasury backed, synthetic, unknown), liquidity_tier (tier_1/2/3 / illiquid, from Jupiter price impact), issuer_verified (Metaplex authority match), market_data_quality (live/stale/none) -- plus the derived composite risk (low/medium/high/blocked) and last_verified_at. FAIL-SAFE: a registered but unscored token, an inactive token, or an unregistered token reports tradeable=false. trade_equity enforces this same composite risk.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| mint_or_symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 valuable behavior beyond that: it details the fail-safe mechanism (unregistered or unscored tokens report tradeable=false) and explains the derived composite risk and last_verified_at. It also clarifies that trade_equity uses this same risk. These details are not redundant with annotations and help the agent understand side effects and limits.
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 structured with clear labels (e.g., 'FAIL-SAFE:') and bullet-like enumeration of the classification dimensions. It front-loads the main purpose and efficiently conveys the return fields. While somewhat long, each sentence adds substantive information, and there is minimal fluff.
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 an output schema exists, the description doesn't need to elaborate on return format extensively. It lists all expected classification dimensions and the derived composite risk. It also includes the fail-safe behavior and the relationship with trade_equity. Missing only edge-case error handling or rate limits, but these are less critical for a read-only classification tool. Overall, it's thorough for its complexity.
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 carries the burden of defining parameters. It clearly explains the main parameter 'mint_or_symbol' as input for the classification. However, the optional 'caller_id' parameter is not mentioned at all, even though it likely serves a standard identification purpose. The description partially compensates for the schema coverage gap but not fully.
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 performs 'Standardised tokenized-stock classification' for a mint or symbol, specifying the exact resource and action. It also lists all the classification dimensions returned, making it easy to distinguish from generic asset classification (asset_classification) or token_info and verify_token. The phrase 'tokenized-stock' sets it apart from broader classification 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 context about the tool's purpose (tokenized-stock classification) and mentions a fail-safe behavior related to tradeable status, but it does not explicitly state when to use this tool versus alternatives like asset_classification or verify_token. It references trade_equity as an enforcer of the same risk, which hints at a related tool but doesn't provide clear when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_risk_assessmentARead-onlyIdempotentInspect
Per-token risk roll-up over recently observed safety signals (free read).
Folds every non-expired signal for subject (symbol or mint) in the window
into the worst risk level seen, a 0..1 risk score, a per-level count
breakdown, and the contributing signals (worst-first). Complements -- does
not replace -- get_risk_assessment (regime + position-size guards for
deploying a strategy). Descriptive observed data only. Not financial advice.
Workflow: INTELLIGENCE / RISK step -- run before quoting or sizing an unfamiliar token; a critical safety signal is a hard skip condition.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| subject | Yes | ||
| caller_id | No | ||
| window_hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. Description adds behavioral details: it folds all non-expired signals into worst risk level, provides risk score and breakdown, and lists contributing signals worst-first. It also states 'Descriptive observed data only. Not financial advice.' There is 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?
The description is composed of three short paragraphs. The first gives the core action, the second clarifies relationship to sibling tool, and the third provides workflow context. It is efficient with no wasted words, though the second paragraph could be slightly more compact. Overall well-structured and front-loaded.
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 that an output schema exists (context signal), the description does not need to detail return format. It covers purpose, differentiation, usage guidelines, and key behavioral details. The missing parameter explanations (limit, caller_id) are minor gaps. For a tool with four parameters and a robust annotation set, the description is largely 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?
Schema coverage is 0% (no schema descriptions), so description must compensate. It explains the 'subject' parameter as 'symbol or mint' and implies window_hours by referring to 'the window'. However, 'limit' and 'caller_id' are not explained. This partial coverage means the description adds some value but is insufficient for a zero-coverage situation.
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?
Description clearly states the tool does per-token risk roll-up over observed safety signals, and explicitly distinguishes it from the sibling tool get_risk_assessment by noting it complements but does not replace that tool. The verb 'get' plus 'risk assessment' is specific, and the scope ('per-token', 'recently observed') is precise.
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?
Description provides explicit workflow guidance: 'INTELLIGENCE / RISK step -- run before quoting or sizing an unfamiliar token; a critical safety signal is a hard skip condition.' It also tells when not to use it by contrasting with get_risk_assessment. This gives the agent clear when-to-use and action-triggering instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trading_workflowARead-onlyIdempotentInspect
Map of how Crank's tools fit into one end-to-end trading flow (read this first).
Read-only, free. Returns an ordered, machine-readable workflow: orient -> intelligence -> yields -> simulate (backtest) -> risk-size -> execute (non-custodial) -> monitor -> journal. Each step names the concrete tool(s) to call, their purpose, key inputs, how to use the output downstream, and the decision points that branch the flow -- so an agent that discovered Crank via tools/list can sequence the full tool surface instead of guessing. Descriptive only (DYOR); only execute-phase tools are value-bearing.
wallet_address (optional, PUBLIC key only -- non-custodial): when
given, appends human_activity -- count + most-recent manual
override on this shared account in the last 72h (decision_type, asset,
rationale summary, timestamp) plus an instruction to reconcile with it
before acting. Human and agents act on ONE account: every human action
is journaled (see journal_query source="human") so it is never invisible
to you. Absent/clean ({"count": 0}) when there is no override.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the readOnly/openWorld/idempotent annotations by disclosing that it is free, non-custodial, returns an ordered machine-readable workflow, appends human_activity when wallet_address is provided, and that human actions are journaled and must be reconciled. This is rich behavioral context.
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 long but every sentence earns its place. It is front-loaded with 'read this first,' then efficiently conveys the workflow phases, tool mapping, output usage, decision points, and wallet-specific behavior without redundancy.
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 fully covers the workflow sequence, tool names, purposes, decision points, downstream output usage, and wallet override handling. Combined with the output schema and rich annotations, this is comprehensive for an orientation tool. Only the minor caller_id omission keeps this from being perfect, but overall completeness is high.
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 thoroughly explains wallet_address (optional, public key only, appends human_activity with count, decision_type, asset, rationale, timestamp, and absent/clean behavior). However, caller_id is not mentioned at all, and with 0% schema coverage this is a minor gap in parameter documentation.
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 this is a map of Crank's end-to-end trading workflow, names the ordered phases, and instructs the agent to 'read this first.' It distinguishes itself from all execution-focused sibling tools by being an orientation/meta tool.
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 explicitly says when to use: after discovering Crank via tools/list, before sequencing the full tool surface. It also clarifies when not to rely on it for value ('Descriptive only (DYOR); only execute-phase tools are value-bearing'), providing clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transaction_historyARead-onlyIdempotentInspect
Recent transactions for a wallet, parsed + human-readable (limit 1-100).
detail="concise" (default) trims each row to signature/type/timestamp/ status (signature is the ID to chain into journal_append's tx_signature); "full" adds description, tokens_involved, token_mints, and amount.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| detail | No | concise | |
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose readOnly/OpenWorld/idempotent behavior. The description adds value beyond that by explaining the parsed and human-readable nature of the output, the 1-100 limit, and the difference between concise and full detail levels, including which fields each mode returns.
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 compact and front-loaded: it states the main action, the limit, and the output format in the first sentence, then elaborates only on the meaningful detail parameter. Every sentence adds relevant information without redundancy.
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 bounded, read-only list query with output schema present, the description covers the important behavior: limit range, response detail levels, and which field serves as the transaction identifier. The only notable gap is caller_id and the exact meaning of 'recent,' but the description is otherwise sufficient for correct invocation.
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 input schema has 0% coverage, so the description is the only source of parameter semantics. The description usefully explains the limit range and the behavior of detail, and wallet_address is inferable from the resource phrase. However, caller_id is left unexplained, and the description does not clarify whether it is an optional tracing parameter or affects the query.
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 returns recent wallet transactions, parsed and human-readable. The specific output modes (concise vs full) are described, and the mention of the signature chaining to journal_append helps distinguish its purpose. This is a specific verb + resource description that an agent can act on.
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 clear context — recent wallet transactions — and explains how the signature can be used as an ID for journal_append. However, it does not explicitly suggest when to pick this tool over other transaction-related siblings such as verify_transaction, get_balances, or journal_query, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_reportARead-onlyIdempotentInspect
An agent's own premium-feature spend report (FREE read).
Returns per-feature {calls, spend_usd, cost_usd} plus totals from the FeatureUsage ledger. period: today | 7d | 30d | all (default 30d).
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 30d | |
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds that it returns per-feature and totals and mentions the data source (FeatureUsage ledger), providing useful behavioral context 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, concise and front-loaded with the core purpose. Every sentence adds value without redundancy.
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 there is an output schema, the description need not detail return values. It explains the type of data and period, but fails to explain the required wallet_address and optional caller_id parameters. For a tool with 3 parameters and no schema descriptions, this leaves gaps.
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 explains the period parameter and its values, but does not explain the required wallet_address or optional caller_id. This partial coverage justifies a baseline of 3.
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's a spend report for premium features, specifying it returns per-feature and total costs. It distinguishes itself from other 'get_*' tools by focusing on the agent's own usage and spend.
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 explicitly states it's a 'FREE read' and explains the period parameter with supported values. However, it does not compare directly with alternatives or provide when-not-to-use guidance, which would improve it further.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_venue_healthARead-onlyIdempotentInspect
Live safety/health read for one trading venue (read-only, non-custodial).
Returns operational status (live/degraded/suspended), last monitoring heartbeat, on-chain program deploy slot, SDK compatibility headline, TVL + perps 24h volume (DeFiLlama, cached 5 min). venue is a slug e.g. "drift", "jupiter", "pacifica". Use BEFORE routing capital to a venue.
Workflow: RISK step (venue-safety gate) -- run before any perps/lending leg; degraded/down reroutes or blocks the order. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | Yes | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by explicitly stating 'read-only, non-custodial' and revealing caching behavior ('TVL + perps 24h volume (DeFiLlama, cached 5 min)'), which goes beyond annotations. No contradictions.
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 yet comprehensive, front-loading the purpose and then efficiently listing returned fields and usage guidance. Every sentence adds value, with no redundant or vague wording.
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 tool with an output schema (not provided but implied), the description covers what is returned and how to use it. It integrates into a workflow ('workflow: RISK step') and references related tool get_trading_workflow. Given the context signals (2 params, high annotation coverage), the description 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?
Schema description coverage is 0%, so the description must compensate. It explains the primary parameter 'venue is a slug e.g. 'drift', 'jupiter', 'pacifica'.' The optional 'caller_id' is not explained, but it has a default and is less critical. Overall, the main parameter is well-described, making the tool usable.
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: 'Live safety/health read for one trading venue (read-only, non-custodial).' It specifies the exact data returned (operational status, heartbeat, deploy slot, SDK compatibility, TVL, perps volume) and distinguishes itself from siblings like get_all_venues_status and get_venue_status by focusing on a single venue with detailed health info.
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?
Provides explicit when-to-use guidance: 'Use BEFORE routing capital to a venue.' and workflow step: 'RISK step (venue-safety gate) -- run before any perps/lending leg; degraded/down reroutes or blocks the order. See get_trading_workflow.' This clearly indicates alternatives and integration context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_venue_risk_scoreARead-onlyIdempotentInspect
Composite venue risk score 0-100 (higher = safer), with breakdown.
Read-only. Folds custody tier (A self-custodial / B venue-custodied), multisig threshold, timelock, audit status, exploit history, TVL trend and program age into a transparent weighted score (score_breakdown returned so the number is auditable). Factual assessment, not financial advice.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | Yes | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds context about the internal factors (custody tier, multisig, etc.) and that the breakdown makes the score auditable, enhancing transparency beyond 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 three sentences long, front-loads the main purpose (composite risk score with range), and every sentence adds value. 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?
Given the existence of an output schema, the description adequately covers the score range, breakdown, and factors. However, the lack of parameter explanation and any mention of pagination or limits leaves a minor gap.
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 input schema has 0% description coverage, and the description does not mention or explain the parameters 'venue' or 'caller_id', leaving their meaning and usage unclear. The description should compensate for the lack of schema descriptions.
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 computes a composite venue risk score from 0 to 100 with a breakdown, and notes it is read-only and factual. However, it does not explicitly differentiate from similar sibling tools like get_risk_assessment or venue_risk_comparison.
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 a risk score with breakdown and states it is not financial advice, but provides no guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_venue_statusARead-onlyIdempotentInspect
Health + capabilities of every perps venue, plus routing config.
Reports primary/fallback venue, which venues are routable, per-venue health (operational/degraded/down/disabled), and capability flags incl custody tier.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and openWorldHint. Description adds context on what the tool returns (health states, capability flags, routing config). No contradictions; consistent with read-only, safe operation.
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 concise sentences front-loaded with key information: 'Health + capabilities of every perps venue, plus routing config.' followed by enumerated details. No redundant or superfluous text.
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 zero required parameters and comprehensive description of output fields, the tool seems complete. However, it doesn't mention potential pagination or if the list of venues is exhaustive. Still, for a read-only aggregate status, it's sufficient.
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% (no description for caller_id). Description does not explain the optional caller_id parameter or its effect. With low coverage, description should compensate but fails to add meaning to the parameter.
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?
Description clearly states it reports health and capabilities for all perps venues, listing specific fields like primary/fallback venue, routable venues, per-venue health states, and custody tier. This distinguishes it from siblings like get_venue_health which may be more specific.
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?
Description implies usage for getting comprehensive venue overview but does not explicitly state when to use or when to use alternatives like get_venue_health or get_all_venues_status. No prerequisite or exclusion conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligence_suggestion_approveADestructiveInspect
Approve a StrategySuggestion, optionally creating the suggested Strategy.
Closes the PROPOSE loop for MCP-only agents: wraps the same
approve-and-create service logic as the REST
StrategySuggestionViewSet.approve action instead of a manual
suggested_config round-trip through the strategy create tools, which
silently drops the suggestion linkage (StrategySuggestion.created_strategy
/ hive DecisionRecord.suggestion FK provenance). wallet_address is the
caller's own wallet (recorded as approved_by_wallet); when
agent_wallet_id also resolves to a wallet wallet_address controls,
the suggested Strategy is created through the same executor dry-run gate
as every other create path. config_overrides merges over
suggested_config (e.g. a real usd_per_buy). A wallet without a
Turnkey signer still gets the strategy -- paper trade, unsigned tx per
tick. Informational rationale only (rules 5-8); the created strategy still
runs only through the existing engine gates.
Workflow: DECIDE -> EXECUTE step -- the MCP-only closing move for get_strategy_suggestions; pair with backtest_strategy + get_risk_assessment first for the same guardrails any other create path gets.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| suggestion_id | Yes | ||
| wallet_address | Yes | ||
| agent_wallet_id | No | ||
| config_overrides | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses substantial behaviors: the tool records the caller's wallet as 'approved_by_wallet', creation passes through the 'executor dry-run gate', 'config_overrides merges over suggested_config', and wallets without a Turnkey signer still produce a paper-trade strategy. It also clarifies that the created strategy is still governed by existing engine gates.
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 front-loaded with a clear one-sentence summary, then expands into necessary workflow and behavioral details. It is lengthy, but each major clause adds distinguishing context about provenance, dry-run gating, wallet behavior, and guardrails, so the length is earned rather than redundant.
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 complex approval+create semantics, the description covers purpose, relationship to suggestion tools, execution guards, provenance preservation, and the wallet edge case. An output schema is present, so return value details do not need to be repeated in prose, and the description provides enough context for an agent to invoke the tool 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 0% schema description coverage, the description carries the burden and does meaningfully explain wallet_address, agent_wallet_id, and config_overrides. However, interval_seconds and caller_id receive no explanation, leaving two parameters with only type/default information as the basis for an agent's interpretation.
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 sentence states a specific verb and resource: 'Approve a StrategySuggestion, optionally creating the suggested Strategy.' It distinguishes this approval-and-create path from a manual 'suggested_config' round-trip through strategy create tools, so it is clear which operation is uniquely performed here.
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 explicitly positions this as the 'MCP-only closing move for get_strategy_suggestions' and instructs agents to 'pair with backtest_strategy + get_risk_assessment first'. It also specifies when not to use the manual create-path alternative because that 'silently drops the suggestion linkage.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
journal_appendAIdempotentInspect
Record a decision in your private, wallet-scoped journal (free write).
Your durable memory on Crank: rationale, intended action, and optional expectations (e.g. {"direction": "up", "horizon": "24h"}) are stored as one opaque body only you can read back; the system later attributes realised P&L from on-chain-verified fills and marks prices at 1h/24h/7d/30d horizons. idempotency_key makes replays safe (offline queues / batch agents). Link evidence via signal_ids / suggestion_id / strategy_id (your own strategies only). Autonomous strategy executions are journaled for you automatically -- use this to add the agent-authored layer on top.
tx_signature (optional): pass the
signature a swap/perp/lend/stake tool just returned to link this
decision to its verified on-chain fill -- the proof the Layer 2
contribution firewall needs. Unknown signature for this wallet -> 404.
If omitted, the wallet's most recent CONFIRMED transaction within a
short window is auto-linked as a best-effort fallback -- explicit is
still more reliable, pass it whenever you have it.
Workflow: DECIDE step -- journal before (or as) you act; query it back with journal_query / get_my_performance.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | ||
| caller_id | No | ||
| rationale | Yes | ||
| session_id | No | ||
| signal_ids | No | ||
| strategy_id | No | ||
| expectations | No | ||
| tx_signature | No | ||
| decision_type | Yes | ||
| suggestion_id | No | ||
| wallet_address | Yes | ||
| client_platform | No | ||
| idempotency_key | No | ||
| intended_action | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Richly discloses behavior beyond annotations: journal entries are opaque and wallet-scoped, P&L attribution is later applied from on-chain fills, idempotency_key makes replays safe, unknown tx_signature returns 404, and omitted tx_signature auto-links the wallet's most recent confirmed transaction as best-effort fallback. No contradiction with readOnlyHint=false, idempotentHint=true, or destructiveHint=false.
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 long, but it is front-loaded and every paragraph earns its place given the zero-coverage schema and 14 parameters. It loses one point for some explanatory asides (Layer 2 firewall proof, repeated emphasis on explicitness) that could be tightened.
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?
With an output schema present and annotations covering safety/idempotency, the description covers all operationally important context: privacy, idempotent replay, evidence linking, tx_signature fallback semantics, and workflow ordering. An agent has enough to call this correctly without external knowledge.
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?
Despite 0% schema description coverage, the description adds real meaning for the core params: rationale, intended_action, expectations, idempotency_key, tx_signature, signal_ids, suggestion_id, strategy_id, and wallet scope. However, it leaves required decision_type and several optional metadata fields (asset, caller_id, session_id, client_platform) unexplained, so it doesn't fully compensate for the empty schema descriptions.
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?
Opens with a specific verb+resource: 'Record a decision in your private, wallet-scoped journal (free write).' It clearly distinguishes itself from read-side siblings by naming journal_query and get_my_performance as the query-back 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?
Provides an explicit workflow: 'journal before (or as) you act; query it back with journal_query / get_my_performance.' It also tells the agent that autonomous strategy executions are already journaled automatically, so this tool is for adding the agent-authored layer, and explains when to attach tx_signature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
journal_queryARead-onlyIdempotentInspect
Read your own decision journal, most recent first (free read).
Wallet-scoped: only decisions journaled for wallet_address are ever returned. Filters: window_hours (0 = all), decision_type, strategy_type, asset (mint/symbol as journaled), outcome_sign (positive|negative|zero on realised P&L), source (agent|system|human -- pass source="human" to see only a manual override on this shared account: human and agents act on ONE account, and every human action is journaled so agents can see and reconcile with it). Every returned row carries its source. detail=concise returns id/type/timestamp/pnl rows (token-budget friendly); detail=full adds bodies, evidence refs, and full outcome marks.
Workflow: ORIENT step -- recall what you decided (and what a human may have overridden) before deciding again.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | ||
| limit | No | ||
| detail | No | concise | |
| source | No | ||
| caller_id | No | ||
| outcome_sign | No | ||
| window_hours | No | ||
| decision_type | No | ||
| strategy_type | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safe read-only behavior. Description adds wallet-scoping, source tracking, detail levels, and workflow hint. 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?
Compact yet comprehensive. Front-loaded purpose, followed by scoping and filter details, ending with workflow context. No fluff.
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 output schema presence and comprehensive description, tool is fully specified for agent selection. Covers purpose, filters, detail options, and usage workflow.
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%, but description explains all key parameters (window_hours, decision_type, strategy_type, asset, outcome_sign, source, detail) with behavior and interrelationships.
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?
Clearly states 'Read your own decision journal, most recent first' with specific verb (Read), resource (decision journal), and ordering. Distinguishes from journal_append (write) and other read tools via wallet-scope.
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?
Explicit workflow context: 'Workflow: ORIENT step -- recall what you decided...before deciding again.' Provides filters but no explicit when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jupiter_swapADestructiveInspect
Execute a token swap via Jupiter (non-custodial).
Without signed_transaction: returns an UNSIGNED base64 transaction for your wallet to sign + broadcast. With signed_transaction: broadcasts the caller-signed tx and returns tx_signature. amount is in base units of input_token. Includes the Crank technology service fee when a referral fee account is configured -- collected ON-CHAIN via Jupiter's platformFeeBps, deducted from swap output. Swaps are NOT additionally gated by x402 (that would double-charge the same fee), so payment_header stays a no-op here (jupiter_swap is not in x402 PAID_TOOLS). pay_in_crank is NO LONGER a no-op: the on-chain rate is now derived from this wallet's volume tier and $CRANK staker / pay-in-$CRANK / Crank Score discounts, so a discounted wallet is quoted a lower platformFeeBps -- the same schedule x402 applies to perps/lend/stake.
SECURITY: the output_token is run through multi-layer authenticity verification before any tx is built; an unverified/suspicious/fake token is blocked (UNVERIFIED_TOKEN). Set allow_unverified=true to trade an unverified token at your own risk (hard scam signals are never overridable).
venue_hint is ADVISORY, never
required -- spot routes via Jupiter aggregation (the only spot venue
today); an unknown hint raises, omitting it is unchanged from before.
Workflow: EXECUTE step -- deploy the directional/allocation leg after the risk phase capped the size. Non-custodial. Get a price first with get_quotes. See get_trading_workflow.
idempotency_key (optional): a client-generated UUID.
Retrying the SAME call (build or broadcast) with the same key + same args
replays the original result instead of re-executing -- guards against a
timeout-then-retry double-swap. Reuse the SAME key across the build call
and its signed_transaction broadcast retry (they dedupe independently);
a NEW key means a genuinely new swap.
verify (default True): when broadcasting
(signed_transaction supplied), await on-chain confirmation and re-read
the output_token balance -- the response gains a verification block
({confirmed, slot, post_state, expected_vs_actual}). Gate follow-on
decisions on verification.confirmed, never on tx_signature alone.
Set False to skip for latency-sensitive callers. Verify any prior
signature later with the standalone verify_transaction tool.
GEO GATE: when either leg is a tokenized
security this call is geo-gated (Reg S = no US persons) and OFAC-screened,
same control trade_equity enforces -- jurisdiction declares the
caller's jurisdiction once (persisted for next time), ip is the
caller's origin IP for the additional Reg-S IP layer. Non-security swaps
are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| amount | Yes | ||
| verify | No | ||
| caller_id | No | ||
| venue_hint | No | ||
| input_token | Yes | ||
| jurisdiction | No | ||
| output_token | Yes | ||
| pay_in_crank | No | ||
| slippage_bps | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation by disclosing non-custodial behavior, signature/broadcast semantics, on-chain fee collection, token authenticity checks, geo-gating, optional verification, and idempotency-key deduplication. This is a high level of behavioral disclosure for a dangerous swap operation.
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 long but well-structured and front-loaded with the most important distinction: unsigned transaction vs signed broadcast. Most sections serve a purpose given the 15-parameter surface, though some fee/governance detail could be tightened without losing essential guidance.
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 core operation, security, fees, idempotency, verification, and geo restrictions, and the output schema covers the return shape. The mainly remaining gaps are slippage_bps and caller_id, plus a slight assumption that the agent already understands the broader trading workflow.
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%, but the description compensates for most parameters: amount, signed_transaction, verify, venue_hint, idempotency_key, allow_unverified, jurisdiction, ip, payment_header, and pay_in_crank are all meaningfully explained. However, slippage_bps and caller_id are not described, and wallet_address is only implied from the signing workflow.
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?
Starts with a concrete verb and resource: 'Execute a token swap via Jupiter'. It clearly differentiates itself from sibling trading tools by naming the aggregation venue and the two modes of use: build an unsigned transaction or broadcast a caller-signed one.
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?
Provides clear workflow context: get a quote first with get_quotes, execute after the risk phase, see get_trading_workflow, and apply trade_control-like geo controls for tokenized securities. It also explains when payment_header is a no-op and when verify should or should not be used, giving explicit routing to the right behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_walletADestructiveInspect
Emergency freeze an agent wallet.
Sets status=killed so the policy gate refuses every subsequent value-bearing action. Returns confirmation + a frozen-positions count. (Turnkey scoped-key revocation is handled by the deferred provisioning ticket.)
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the mechanism (sets status=killed), the downstream effect (policy gate refuses value-bearing actions), and the output (confirmation + frozen-positions count). It also discloses a limitation (scoped-key revocation is not handled here). This goes beyond the annotations (destructiveHint=true, idempotentHint=false) by adding concrete behavioral context. 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 three sentences with no fluff. The first sentence front-loads the purpose, and the rest delivers essential behavioral detail. Every sentence earns its place.
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's moderate complexity and the presence of annotations and an output schema, the description covers all necessary dimensions: purpose, exact effect, return value, and an alternative. It is comprehensive for an agent 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 a schema description coverage of 0%, the description carries full burden for parameter guidance, but it does not mention wallet_address or caller_id at all. The wallet_address is partially implied by "agent wallet," but the optional caller_id remains unexplained. This is a clear gap given the zero coverage.
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 specific, actionable verb phrase: "Emergency freeze an agent wallet." It distinguishes the tool from siblings like enable_agent_wallet, create_agent_wallet, and wallet_status by specifying the freeze action and the mechanism (sets status=killed).
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 clearly frames this as an emergency operation, implying a high-stakes context. The note about scoped-key revocation being handled by a deferred provisioning ticket provides an explicit alternative for a related but distinct action, helping the agent decide when not to use this tool. However, it does not explicitly list exclusions or contrast with wallet_status/enable_agent_wallet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lend_borrowADestructiveInspect
Borrow against deposited collateral (non-custodial).
Returns an UNSIGNED base64 tx + current health factor (pre-borrow estimate). amount in base units of borrow_token. Deposit collateral first. Past the daily free tier an x402 payment_header is required. The borrowed token is authenticity-verified first; set allow_unverified=true to borrow an unverified token at your own risk.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-borrowing. Reuse the SAME key across the build call and its
signed_transaction completion call -- see lend_deposit;
the two legs dedupe independently, so this never raises
IDEMPOTENCY_CONFLICT.
signed_transaction / verify (two-phase execution):
see lend_deposit -- re-call with the signed tx and Crank broadcasts it,
confirms it on-chain, and re-reads the borrowed balance + obligation health.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| market | No | ||
| verify | No | ||
| protocol | Yes | ||
| caller_id | No | ||
| borrow_token | Yes | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| collateral_token | Yes | ||
| marginfi_account | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that the tool returns an unsigned base64 transaction, returns a pre-borrow health factor, requires x402 payment past the free tier, verifies the borrowed token instead of silently borrowing, and explains idempotency and two-phase execution. This is far more behavioral detail than the annotations provide.
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 long but the length is justified by the complexity of the operation. The core action and return value are front-loaded, followed by risk relevant warnings, idempotency semantics, and the two-phase execution flow. A few references to lend_deposit are repeated, but they support the same message rather than adding clutter.
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 critical execution context: collateral first, return behavior, payment requirements, token verification, idempotency, and the signed_transaction two-phase path. It does not explain several optional parameters directly, but given the already existing output schema and annotations, the remaining gaps are minor.
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 schema has 0% description coverage, so the description must carry parameter semantics. It covers amount, allow_unverified, payment_header, idempotency_key, and signed_transaction/verify well, but it remains silent on protocol, market, marginfi_account, caller_id, and pay_in_crank, leaving notable gaps in a 14-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 opening sentence "Borrow against deposited collateral (non-custodial)" names a specific action and resource, and the rest makes clear this tool creates a borrow position, not a deposit or repayment. It is easily distinguished from siblings like lend_deposit and lend_repay.
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 clear context for when the action is possible ("Deposit collateral first"), notes when a payment header is required, and points to lend_deposit for the two-phase execution pattern. It does not explicitly list exclusions or contrast it with alternatives, but the usage flow is implied strongly enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lend_depositADestructiveInspect
Deposit assets to earn yield on Kamino or Marginfi (non-custodial).
Returns an UNSIGNED base64 tx to sign + broadcast, plus supply APY. amount is in base units of token. protocol: kamino | marginfi -- pin one to keep exact prior behaviour. Marginfi needs marginfi_account (create via the sidecar). Past the daily free tier an x402 payment_header is required. The deposited token is authenticity-verified first; set allow_unverified=true to supply an unverified token at own risk.
venue_hint / auto-route: pass protocol="auto" (or
"") -- optionally with venue_hint as an advisory alias, same
naming as jupiter_swap/trade_equity -- to route through the SAME
primary+fallback health-failover the internal earn/lending trade bridge
already applies: an empty rate snapshot on the primary
protocol fails over to the configured fallback. Extends this tool instead
of adding a separate earn_quote/trade_earn surface, so lend_deposit is now
the one first-class MCP path for both a pinned protocol and an
auto-routed deposit. A router-resolved call also carries the
smart-contract counterparty-risk disclosure in the response
(disclosures), matching the internal bridge.
Workflow: EXECUTE step (yield leg) -- supply idle stables/tokens after comparing get_lending_rates; monitor with get_health_factor. See get_trading_workflow.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-depositing. Reuse the SAME key across the build call and its
signed_transaction completion call -- the two legs
dedupe independently, so this never raises IDEMPOTENCY_CONFLICT; a NEW
key means a genuinely new deposit.
signed_transaction / verify (two-phase execution):
re-call this tool with the SIGNED base64 tx and Crank broadcasts it, then
awaits on-chain confirmation and re-reads BOTH the deposited token's
balance and the obligation's health -- the response carries a real
verification block ({confirmed, slot, post_state, expected_vs_actual}).
Gate follow-on borrowing on verification.confirmed, never on
tx_signature alone. verify=false skips only the confirmation wait. When
the build leg auto-routed (protocol="auto"), pass back the SAME resolved
protocol the build response reported -- re-resolving from "auto"/
venue_hint again on the completion leg could pick a different venue if
health changed between calls.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| amount | Yes | ||
| market | No | ||
| verify | No | ||
| protocol | Yes | ||
| caller_id | No | ||
| venue_hint | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| marginfi_account | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is exceptionally transparent about behavior: it returns an UNSIGNED tx, requires x402 payment_header past the free, will fail over venue on empty rate snapshots, has truthiness checks via allow_unveriefied, and clears two-phase execution with Crank broadcast and verification block. It also describes idempotency replay semantics and says the transaction is uncustodial. These go well beyond the sparse annotations: readOnlyHint=false, destructructiveHint=true, idempotentHint=false.
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 long, but it is detailed enough to support a high-complexity 14-parameter tool. It front-loads the purpose and uses labeled inline concepts like protocol, auto-route, and two-phase execution. Some sentences are more architect/chronicle than agent-instructive, especially the extended 'instead of a separate earn_quote...' rationale, so it is not maximally concise.
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's complexity, the description covers return values, workflow, prevate perlink, fee gates, verification semantics, counterpart risk disclosures, and venue failouver behavior. The output schema can sussumeance the return structure and this description explains everything an agent needs to call lend_deposit correctly, including how to complete the two-leg two-phase flow.
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 descrption carries the load. It does meaningfully explain protocol, amount, venue_hint, marginfi_account, allow_unerified, idempotency_key, signed_transaction, verify, payment_headeer, and wallet addess is implied. However it leaves market, caller_id, and pay_in_crank undiscussed, so it compensates for the schema gap but not completely.
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 first sentence is explicit: 'Deposit assets to earn yield on Kamino or Marginfi (non-custodial).' It names the verb, resource, and venue clearly, and it is easy to distinguish from siblings like lend_borrow or lend_repay even though those are not explicitly excluded. The rest of the description reinforces scope by contrasting with auto-routing vs pinning one venue.
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 workflow guidance: supply after comparing get_lending_rates, monitor with get_health_factor, and see get_trading_workflow. It also explains placement for pinned protocol vs auto-route and when to use signed_transaction. It does not explicitly say 'do not use lend_borrow or lend_repay here,' but the context already directs when this tool is the appropriate funder route.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lend_repayADestructiveInspect
Repay borrowed amount (non-custodial). Returns an UNSIGNED base64 tx + current health factor. amount in base units of token. Past the daily free tier an x402 payment_header is required.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-repaying. Reuse the SAME key across the build call and its
signed_transaction completion call -- see lend_deposit;
the two legs dedupe independently, so this never raises
IDEMPOTENCY_CONFLICT.
signed_transaction / verify (two-phase execution):
see lend_deposit -- re-call with the signed tx and Crank broadcasts it,
confirms it on-chain, and re-reads the repaid balance + obligation health.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| amount | Yes | ||
| market | No | ||
| verify | No | ||
| protocol | Yes | ||
| caller_id | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| marginfi_account | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: non-custodial may have an UNSIGNED transaction, specific idempotency replay semantics, and two-phase execution via signed_transaction. It does not exhaustively describe every effect, but it covers the most important behavioral traits and 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?
The description is well-organized and front-leftloaded with the core purpose and immediate constraints. The two follow-up paragraphs are focused and each carries its own purpose, though the reference to lend_deposit could mean repeated reading for full 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?
For a complex a12-parameter tool with 0% schema coverage, the description covers key behavioral flows but omits too many parameter meanings and fails to explain how protocol/token/market/marginfi_account should be specified. The output schema and annotations provide some baseline, but an agent would still need to infer significant details.
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 coverage, the description must compensate, and it partially does by explaining amount units, payment_header, idempotency_key, and signed_transaction/verify. But it does not describe core parameters like protocol, token, wallet_address, market, caller_id, or marginfi_account, leaving meaningful uncertainties for a 12-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 uses a specific verb and resource: 'Repay borrowed amount (non-custodial).' It further clarifies the exact output ('UNSIGNED base64 tx + current health factor'), making it immediately clear that this is the repayment counterpart to lending tools like lend_borrow and lend_deposit.
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 helpful operational context, such as when payment_header is required and how the two-phase signed_transaction flow works. However, it does not explicitly state when to use this tool versus lend_borrow or lend_deposit, or describe exclusions/alternatives. It mostly implies usage from the tool name and repay context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leverage_closeADestructiveInspect
Unwind a tracked leveraged position: sell -> repay stable -> withdraw.
Returns an ORDERED STEP PLAN. position_id from leverage_long. Past the daily free tier an x402 payment_header is required.
jurisdiction: closes are geo-gated too --
see short_open.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-unwinding the position.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| market | No | ||
| caller_id | No | ||
| position_id | Yes | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| slippage_bps | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| marginfi_account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/non-readonly/non-idempotent behavior. The description goes further by disclosing that it returns an ORDERED STEP PLAN, requires a payment_header past the free tier, is geo-gated, and that idempotency_key replays the original result instead of re-unwinding. 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?
The description is compact and well-structured, front-loading the core operation and using labeled backtick references for parameters. Every sentence earns its place with no filler or redundancy.
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 destructive financial tool with 11 parameters and no schema descriptions, it covers the essential invocation context: source position, payment requirement, geo-gating, idempotent replay behavior, and return form. The output schema covers return details, and most unexplained parameters are optional or self-explanatory from their names.
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 meaningfully explains position_id, jurisdiction, idempotency_key, and payment_header behavior. However, several optional parameters such as market, marginfi_account, slippage_bps, pay_in_crank, caller_id, and ip remain undocumented in both schema and description, leaving a notable gap.
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?
Description opens with a specific verb ('Unwind') naming the resource ('tracked leveraged position') and gives the exact process sequence: sell -> repay stable -> withdraw. The reference to 'position_id from leverage_long' clearly ties it to its counterpart and distinguishes it from the obvious sibling that opens the position.
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 explicitly connects this tool to leverage_long, indicating it is the closing counterpart, and points to short_open for jurisdiction behavior. This gives an agent enough context to select it for unwinding a leveraged position, though it does not enumerate when not to use it versus other close-related siblings like short_close.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leverage_longADestructiveInspect
Open a lending-based leveraged long by looping deposit -> borrow stable -> buy more -> redeposit.
Returns an ORDERED STEP PLAN of UNSIGNED base64 txs, effective leverage, loop count, health factor, and a position_id. amount in base units. The levered token is authenticity-verified first; set allow_unverified=true to lever an unverified mint at your own risk. Past the daily free tier an x402 payment_header is required.
jurisdiction: leverage is geo-gated too --
see short_open.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-opening the leveraged position.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| token | Yes | ||
| amount | Yes | ||
| market | No | ||
| protocol | No | kamino | |
| caller_id | No | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| slippage_bps | No | ||
| stable_token | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| target_leverage | Yes | ||
| allow_unverified | No | ||
| marginfi_account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses multi-step looping behavior, unsigned base64 step plan, authenticity verification, unverified-token risk, x402 payment requirement past free tier, geo-gating, and idempotent replay via idempotency_key. This goes well beyond the annotations (readOnly false, destructive true) and provides actionable risk and execution context. 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?
Five compact sentences, each carrying distinct information: purpose, return shape, verification/risk, payment, jurisdiction, idempotency. Formatting with backticks draws attention to parameter names. No fluff.
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 16-parameter, multi-step leverage tool, the description covers purpose, key required-param semantics, risk, payment, and idempotency, and references the output schema for return details. Optional params like pay_in_crank and marginfi_account remain undefined, which is a minor gap. Overall enough for a typical invocation.
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 coverage, the description compensates for several params: amount in base units, allow_unverified, payment_header, jurisdiction, idempotency_key. However, cryptic optional params like pay_in_crank, marginfi_account, stable_token, and target_leverage semantics are not explained. Partial compensation only.
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?
Description opens with a specific verb and mechanism: 'Open a lending-based leveraged long by looping deposit -> borrow stable -> buy more -> redeposit.' This clearly distinguishes it from short/perpetual/swap siblings. Return-value summary further clarifies scope.
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 gives clear context for when this tool applies: any lending-based leveraged long request. It cross-references short_open for geo-gating, but does not explicitly route to alternatives like perp_open_long or leverage_close. The intended use is implied by name and mechanism rather than explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liquid_stakeADestructiveInspect
Stake SOL for a liquid-staking token (non-custodial).
amount in lamports. protocol: marinade | jito | blaze. Returns an UNSIGNED base64 tx + the LST received + current APY. The technology service fee is charged on the staked-SOL notional past the daily free tier (x402 payment_header; set pay_in_crank for the $CRANK discount).
Workflow: EXECUTE step (yield leg) -- stake the idle slice after comparing get_lst_yields. Non-custodial. Monitor via portfolio_snapshot. See get_trading_workflow.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-staking. Reuse the SAME key across the build call and its
signed_transaction completion call -- the two legs
dedupe independently, so this never raises IDEMPOTENCY_CONFLICT; a NEW
key means a genuinely new stake.
signed_transaction / verify (two-phase execution):
re-call this tool with the SIGNED base64 tx and Crank broadcasts it, then
awaits on-chain confirmation and re-reads the LST + SOL balances -- the
response carries a real verification block ({confirmed, slot,
post_state, expected_vs_actual}). Gate follow-on decisions on
verification.confirmed, never on tx_signature alone. verify=false skips
only the confirmation wait.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| verify | No | ||
| protocol | Yes | ||
| caller_id | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by disclosing the two-phase execution (build-then-confirm), the verification eagerly awaited once verify=true, the "verification" block semantics ({confirmed, slot, post_state, expected_vs_actual}), and the explicit instruction to gate on verification.confirmed rather than tx_signature. It also reveals fee billing details (x402 payment_headers, pay_for_the_block discount) and confirms the non-custodial flow. This substantially adds behavioral context that annotations alone (only read-only hints) already communicate.
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 organized in cohesive, rule-structured blocks: purpose+payload, fees, workflow routing, idempotency, and verification protocol. Every section earns its place since the two-phase mechanism and idempotency dedup are genuinely non-obvious, and the text keeps each section compact. It pulls the main action-parameter details first and backloads the complex semantics, which is ideal for an agent sampling the 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?
For a 10-parameter, mutation-safe tool with a rich output schema, the description is impressively complete: required parameters, units, protocol values, fee behavior, static text and verification timing are all covered. The remaining gap is `allow_unverified` (and to a lesser extent `caller_id`), which is left to the schema's default. Since the description already carries the most safety-critical instructions, one missing parameter is a minor but real completeness shortfall.
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 description coverage at 0%, the description is the primary source of parameter meaning and it carries that burden well: it documents amounts=(lamports), protocol=(enumeration), verify=skipping the confirmation wait, idempotency_key (client UUID, dedup and replay semantics, same-key-across-legs rule), signed_transaction (the second-phase re-call), and the pay_in_crank/payment_header pairing. The only noticeable gap is `allow_unverified`, which is left undefined; its behavior appears important for results variation but is undeclared.
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 specific verb + resource + outcome: "Stake SOL for a liquid-staking token (non-custodial)." It then names the distinct protocols (marinade | jito | blaze), clarifies the return payload (unsigned base64 tx, LST, APY), and clearly separates this stake action from other operations. An agent can tell exactly what to expect from this tool at a glance.
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 explicitly positions the tool in a workflow: "EXECUTE step (yield leg)" and instructs to "stake the idle slice after comparing the yield rates get_lst_yields", plus "Monitor via portfolio_snapshot. See get_trading_workflow." This gives the AI encoded context on when — and in what order — to invoke it. It does not list explicit exclusion warnings, e.g., when to choose an alternative like lst_swap, so it misses a bit of against-criteria guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alertsARead-onlyIdempotentInspect
List a wallet's alerts -- what is currently armed. Free read.
Covers both price/position alerts (set_alert) and health-factor liquidation alerts (set_liquidation_alert) -- one table, told apart by alert_type. Default shows only ARMED alerts (active, not yet triggered) -- exactly the set the Celery evaluators will act on. include_triggered=True adds already- tripped and deactivated alerts (recent history). limit caps at 200.
Workflow: MONITOR step -- read before arming another alert so you do not duplicate a level that is already watched. Pairs with set_alert. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No | ||
| wallet_address | Yes | ||
| include_triggered | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld, idempotent), the description adds important behavioral details: 'Default shows only ARMED alerts (active, not yet triggered) -- exactly the set the Celery evaluators will act on' and 'include_triggered=True adds already-tripped and deactivated alerts.' It also notes 'limit caps at 200' and calls it a 'Free read,' providing cost and data-shape context.
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 paragraphs: a one-line summary, a detail paragraph on coverage/defaults, and a workflow note. Each sentence adds information, and it's front-loaded with the core purpose. No redundancy or 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 description covers what the tool does, what alerts it includes, the default filter behavior, parameter effects, and workflow integration. It provides enough context for an agent to decide when to call it, and the output schema handles return 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 coverage is 0%, so the description must explain parameters. It does: 'include_triggered=True adds already-tripped and deactivated alerts' and 'limit caps at 200.' The required wallet_address is self-evident from 'a wallet's alerts.' However, caller_id is not mentioned, so it doesn't fully document all 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 opens with 'List a wallet's alerts -- what is currently armed. Free read.' This clearly identifies the verb and resource. It distinguishes itself from siblings by naming set_alert and set_liquidation_alert as producers and explaining it covers both alert types.
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 explicitly frames this as a MONITOR step: 'read before arming another alert so you do not duplicate a level that is already watched.' It also notes it 'Pairs with set_alert' and points to get_trading_workflow for broader context, giving clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_session_signersARead-onlyIdempotentInspect
List all delegated session signers (active + revoked) for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds value by specifying that the listing includes both active and revoked signers, which is non-obvious behavioral context beyond what annotations provide.
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?
Single sentence with no unnecessary words. The description is front-loaded with the key action and scope, earning its place without extra content.
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's low complexity (2 parameters, 1 required) and the presence of an output schema, the description is sufficient. It names the key resource (wallet) and the scope (all delegated signers), which is complete for a simple list operation.
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 only mentions 'for a wallet', which aligns with the required wallet_address parameter but fails to explain the optional caller_id parameter. The description adds minimal meaning beyond the parameter names in 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 clearly states the tool lists all delegated session signers (both active and revoked) for a wallet, with a specific verb and resource. It distinguishes itself from sibling tools like authorize_session_signer and revoke_session_signer by being a read 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?
No explicit when-to-use or when-not-to-use guidance is given. The sibling tools hint at alternatives, but the description does not mention when to use list versus authorize or revoke, leaving usage context implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_signal_catalogARead-onlyIdempotentInspect
Catalog of every available signal stream (free read).
One entry per signal source across all tiers -- on-chain collectors, free API sources, derived analyzers and external provider adapters -- with tier, cost-gate state (paid Tier-D gates are fail-closed and disabled by default), coverage window (earliest/latest persisted signal -- the honest backtest window), effectiveness stats (graded evaluation count + correct rate) and a gameability class (social streams rank high -- they carry anti-gaming caps). Descriptive historical data only. Not financial advice.
Workflow: COMPOSE step -- enumerate streams before authoring a composite strategy definition; pair with get_signals to inspect a stream's feed.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| include_inactive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds valuable context beyond annotations: it notes that paid Tier-D gates are fail-closed and disabled by default, that the coverage window represents the honest backtest window, and that social streams carry anti-gaming caps. It also clarifies this is 'Descriptive historical data only. Not financial advice.' The only minor gap is not describing the exact return format, but the output schema exists and the description covers the key behavioral traits.
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 well-structured with a clear opening sentence, a detailed but organized enumeration of what's included, and a workflow section at the end. It's slightly long but every sentence adds value — the tier/cost-gate/coverage/effectiveness/gameability details are all useful for an agent deciding whether to call this tool. The workflow guidance is front-loaded enough to be noticed. The only minor deduction is that the 'Not financial advice' disclaimer, while useful, could be considered boilerplate.
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's complexity (catalog of many signal types with multiple attributes), the description is quite complete. It covers what the tool returns, the categories of signals, the key behavioral caveats (fail-closed gates, anti-gaming caps), and the workflow context. The output schema exists, so return format details are covered there. The main gap is the lack of parameter explanation (caller_id and include_inactive), which is a minor issue given the self-explanatory names. For a catalog/list tool with read-only annotations, this is a strong 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?
Schema description coverage is 0%, so the description must compensate for the two parameters (caller_id and include_inactive). The description does not explicitly explain either parameter. However, the parameter names are fairly self-explanatory: caller_id is likely an identifier for the caller, and include_inactive (default true) clearly controls whether inactive streams are included. The description's mention of 'every available signal stream' and 'one entry per signal source across all tiers' implies the include_inactive behavior, but it doesn't explicitly state what 'inactive' means or how caller_id affects results. With 0% schema coverage, the description should have done more to explain these 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 clearly states the tool lists every available signal stream, enumerates the categories of sources (on-chain collectors, free API sources, derived analyzers, external provider adapters), and specifies the fields returned (tier, cost-gate state, coverage window, effectiveness stats, gameability class). This is a specific verb+resource with clear scope, and it distinguishes itself from siblings like get_signals (which inspects a stream's feed) and get_signal_effectiveness (which likely provides effectiveness stats for a specific signal).
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 explicitly states the workflow: 'COMPOSE step -- enumerate streams before authoring a composite strategy definition; pair with get_signals to inspect a stream's feed.' This tells the agent exactly when to use this tool (before composing a strategy) and which sibling to pair it with (get_signals). It also implies when not to use it (when you need to inspect a specific stream's feed, use get_signals instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksARead-onlyIdempotentInspect
List a wallet's webhook subscriptions (free read; secrets are never returned).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the specific behavioral detail that secrets are never returned, which is valuable security context 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 a single sentence of 10 words, front-loading purpose and key safety detail with 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?
Given the tool is simple with an output schema present and comprehensive annotations, the description covers the main behavioral traits adequately, though it could mention pagination or result limits.
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 the description does not explain any parameters. It mentions 'a wallet's' implying wallet_address is needed, but does not describe caller_id or provide format 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 clearly states the verb 'list' and the resource 'webhook subscriptions', and adds that it's a 'free read' and 'secrets are never returned', distinguishing it from register_webhook or delete_webhook.
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 as a safe listing operation and mentions that secrets are never returned, but does not explicitly state when to use it instead of alternatives or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lst_swapADestructiveInspect
Swap between two LSTs via the Sanctum router (non-custodial).
from_lst/to_lst are mints; amount in base units. Returns an UNSIGNED base64 tx + output amount. The technology service fee is charged on the input-LST notional past the daily free tier (x402 payment_header). The acquired LST (to_lst) is authenticity-verified first; set allow_unverified=true to swap into an unverified LST at your own risk.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-swapping. Reuse the SAME key across the build call and its
signed_transaction completion call -- see liquid_stake;
the two legs dedupe independently, so this never raises
IDEMPOTENCY_CONFLICT.
signed_transaction / verify (two-phase execution):
see liquid_stake -- re-call with the signed tx and Crank broadcasts it,
confirms it on-chain, and re-reads both LST balances.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| to_lst | Yes | ||
| verify | No | ||
| from_lst | Yes | ||
| caller_id | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing that only an UNSIGNED base64 tx is returned, that the fee is charged past a daily free tier via payment_header, that the destination LST is authenticity-verified first, that allow_unverified swaps are at user risk, and that the signed phase broadcasts and on-chains confirmations happen later. This is rich side-effect disclosure.
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 structured into clear sections: core swap semantics, idempotency behavior, and two-phase execution. It is fairly long but each paragraph earns its place given the 11 parameters. Some repetition, like multiple references to liquid_stake, could be tightened slightly.
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?
With a highly complex two-phase swap and an output schema present, the description covers most needed context: output shape, fee behavior, idempotency, verification, and execution semantics. The remaining gaps are optional parameters and the heavy reliance on a sibling tool for the two-phase protocol details.
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?
Because the schema has 0% description coverage, the description must carry parameter meaning. It does well for from_lst/to_lst as mints, amount in base units, idempotency_key as an optional UUID, allow_unverified risk, and the signed_transaction/verify flow. It does not explain wallet_address, caller_id, or pay_in_crank, so it is not fully complete.
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 and resource: 'Swap between two LSTs via the Sanctum router (non-custodial).' It clearly distinguishes this from generic swap tools like jupiter_swap and from staking/unstaking tools by specifying the asset class and protocol.
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 strong operational guidance: when idempotency_key should be reused, when allow_unverified=true is needed, and how the two-phase signed_transaction/verify flow works. However, it does not explicitly say when to prefer this tool over unrelated alternatives like jupiter_swap or liquid_stake, so the agent must infer the selection criteria from the tool name and first sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
offramp_to_fiatADestructiveInspect
Cash out crypto to fiat via MoonPay (non-custodial).
token is the crypto to sell; amount is its quantity; destination is a MoonPay bank_account_id the fiat is paid to. Returns offramp_id, estimated_fiat, and status. Past the daily free tier an x402 payment_header is required.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result (same
offramp_id) instead of creating a second MoonPay sell order.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| amount | Yes | ||
| caller_id | No | ||
| destination | Yes | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behaviors beyond annotations: non-custodial, the need for a payment_header past the free tier, and the idempotency behavior with replay semantics. It also notes it returns offramp_id, estimated_fiat, and status. Annotations already mark destructiveHint=true and readOnlyHint=false, which align; there is no contradiction. It adds meaningful context about side effects and constraints.
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 well-structured: a one-line summary, then parameter explanations, then return values, then a conditional requirement, then idempotency details. It is concise and front-loaded with the primary verb and resource. Slight redundancy (e.g., repeating payment_header in the body) but overall efficient.
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 has an output schema, so return values are externally specified; the description still mentions them. It covers the payment header and idempotency, which are critical. However, it omits the purpose of wallet_address, caller_id, and pay_in_crank, leaving significant gaps for a tool with 8 parameters. While not incomplete for safe invocation, it is short of full 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?
Schema description coverage is 0%, so the description must compensate. It explains token, amount, destination, and idempotency_key, but leaves required wallet_address, caller_id, pay_in_crank, and payment_header unqualified (payment_header is only mentioned as a requirement, not its format or purpose). The explanation is partial; several parameters, including a required one, are undocumented.
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 and resource: 'Cash out crypto to fiat via MoonPay (non-custodial)'. It unambiguously states the action and the service used, and the non-custodial qualifier adds a distinct operational trait. Among hundreds of siblings, no other tool mentions offramping to fiat, so it is clearly distinguished.
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 explains how to use the tool and under what conditions (e.g., payment_header required past the free tier), but it never contrasts with alternatives or says 'use this when...'. With no explicit when-to-use vs. other tools, the context is implicit rather than directive. This meets a minimal bar but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_closeADestructiveInspect
Close a perp position, full or partial (non-custodial).
close_pct in (0, 100]. Returns an UNSIGNED base64 tx to sign + broadcast, plus exit price + realized P&L estimate (incl funding). Past the daily free tier an x402 payment_header is required.
jurisdiction: closes are geo-gated too --
see perp_open_long.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-closing the position.
signed_transaction / verify (two-phase execution):
see perp_open_long -- re-call with the signed tx and Crank broadcasts it,
confirms it on-chain, and re-reads the position.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| market | Yes | ||
| verify | No | ||
| caller_id | No | ||
| close_pct | No | ||
| position_id | No | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This is a strong area. With only destructiveHint=true and readOnlyHint=false available from annotations, the description compensates fully by disclosing that it returns an unsigned base64 tx, may require an x402 payment_header, supports replay via idempotency_key, and uses a signed_transaction/verify two-phase flow. It also flags jurisdiction geo-gating and realized P&L details.
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 dense but well-structured and front-loaded. The core purpose comes first, then each subsequent line adds one meaningful operational detail. Backticked parameter names and clear paragraphs make it easy to scan without waste.
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's complexity, the description is quite complete: it covers the main return shape, fee requirements, jurisdiction gating, idempotency semantics, and two-phase execution with Crank. An output schema exists, so return-value documentation is mostly offloaded. The main gap is that positional parameters such as position_id and pay_in_crank are not contextualized, and the agent must infer their role from names alone.
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 schema has 0% property descriptions, so the description carries a key burden. It adds useful semantics for close_pct, idempotency_key, signed_transaction, verify, payment_header, and jurisdiction. However, it does not explain position_id selection, pay_in_crank, wallet_address, market, ip, or caller_id, even though some are core to correctly closing the intended position.
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 verb and resource: 'Close a perp position, full or partial'. The non-custodial and unsigned-transaction details help set it apart from a custodial close flow, but it does not explicitly contrast it with the sibling close_perp_position, so some sibling differentiation is left implicit.
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 conveys context for using the tool — full/partial close, non-custodial, fee tiers, idempotency, and two-phase execution — and directionally references perp_open_long. However, it never says when NOT to use this tool or explicitly names alternatives such as close_perp_position, cancel_perp_order, or perp_modify.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_funding_ratesBRead-onlyIdempotentInspect
Current funding for a perp market (rate, period, last funding timestamp).
market e.g. SOL-PERP. period is informational (1h/8h/24h).
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | ||
| period | No | 1h | |
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds that it returns 'rate, period, last funding timestamp' and notes that period is informational (1h/8h/24h), providing beyond-annotation context. However, it doesn't clarify if period affects the data returned or is just a filter.
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?
Description is concise with two sentences: first states the core purpose, second adds examples and clarification. No unnecessary words. Could be slightly more structured (e.g., bullet points) but is very efficient and easily readable.
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 presence of an output schema and annotations, the description provides reasonable context: it explains the key input (market) and output shape (rate, period, timestamp). However, it omits purpose of caller_id and doesn't clarify period's effect on results. Complete enough for a simple read-only tool but has minor gaps.
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 compensate. It provides meaning for market (example SOL-PERP) and period (informational with allowed values), but caller_id is not mentioned. This partially covers the parameters but misses one, making it adequate but not thorough.
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?
Description clearly states it returns current funding for a perp market, including rate, period, and last funding timestamp. It gives an example market (SOL-PERP) and mentions period options. However, it does not explicitly distinguish from the sibling tool 'perp_funding_rates_all', which likely returns data for all markets, missing an opportunity for 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?
No explicit guidance on when to use this tool over alternatives like perp_funding_rates_all or perp_markets. While it implies usage for a single market via example, it does not state when to choose this tool vs. others, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_funding_rates_allARead-onlyIdempotentInspect
Normalized funding/borrow rates across venues (venue=None aggregates).
| Name | Required | Description | Default |
|---|---|---|---|
| venue | No | ||
| market | No | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 safety and side effects. The description adds the aggregation behavior and normalization aspect, but does not disclose additional traits like rate limits or authentication requirements. With annotations present, the description adds moderate context.
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 sentence that conveys the core purpose concisely. It is front-loaded with the key action and resource, with no superfluous 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?
Given the tool's simplicity (3 optional params, safe, output schema present), the description covers the main functionality and aggregation behavior. It is nearly complete but could briefly clarify what 'normalized' means or hint at the output structure. Since an output schema exists, the omission is acceptable.
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%, putting full burden on the description. Only 'venue' is hinted at via 'venue=None aggregates', while 'market' and 'caller_id' have no explanation. This is insufficient for a tool with three optional 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 clearly states the tool provides normalized funding/borrow rates across multiple venues, with the special behavior of venue=None aggregating data. This is specific and distinguishes it from siblings like perp_funding_rates, which likely targets a single venue.
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 contexts by mentioning venue=None aggregation, but it does not explicitly state when to use this tool versus alternatives like perp_funding_rates. No when-not-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_marketsCRead-onlyIdempotentInspect
Available Drift perp markets with price, open interest, funding, max leverage.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint) already clarify safety. The description adds value by listing returned fields, but does not disclose any additional behavioral traits like filtering or pagination.
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 one sentence and front-loaded with key information. It is concise, though it sacrifices some context for brevity.
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 that an output schema exists and complexity is low, the description is functional. However, it lacks context such as protocol details (Drift) and usage scenarios, making it minimally adequate.
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 (caller_id) is not explained in the description. With 0% schema description coverage, the description fails to clarify its purpose or usage.
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 returns available Drift perpetual markets with specific data fields (price, open interest, funding, max leverage). It distinguishes from siblings like 'perp_markets_all' by implying a standard view, but could be more precise.
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 on when to use this tool versus alternatives. Although siblings include 'perp_markets_all', there is no explicit direction on selection criteria or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_markets_allARead-onlyIdempotentInspect
Perp markets across venues (venue=None aggregates all routable venues).
detail="concise" (default) trims each market to symbol/venue/price/ max_leverage (symbol is the ID to chain into place_perp_order); "full" adds base/quote/custody_tier/min_size/open_interest_usd.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | No | ||
| detail | No | concise | |
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, read-only, idempotent operation. The description adds meaningful behavioral context by explaining that venue=None aggregates all routable venues and that the detail parameter changes which fields are returned. No contradiction with annotations exists.
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 dense but efficient. Every sentence adds value: market venue scope, aggregate behavior, detail variants, and the chaining hint to place_perp_order. It is front-loaded and avoids 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?
Given the annotations (read-only, idempotent, non-destructive), the output schema, and the absence of required parameters, the description covers everything an agent needs to call the tool correctly and interpret its default behavior. The field-level detail variants are described precisely, so no critical operational knowledge is missing.
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 input schema has 0% description coverage, so the description carries the burden, and it largely succeeds: it explains the venue parameter (None means aggregate) and the detail parameter with the exact field sets for 'concise' and 'full'. It does not elaborate on venue string values or caller_id, but those are less critical given the explicit coverage of the two behavior-driving 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 opening phrase 'Perp markets across venues' names the resource and purpose directly. The clarification that venue=None aggregates all routable venues distinguishes this from the single-venue sibling perp_markets, and the note about chaining symbol into place_perp_order reinforces its role as a market-listing tool.
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 explains how venue and detail parameters behave, which gives useful context for when the tool is appropriate. However, it does not explicitly name alternatives or state when not to use this tool, such as 'for a single venue, use perp_markets' or 'for position data, use perp_positions_all.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_modifyADestructiveInspect
Modify an existing open Drift ORDER by order_id (non-custodial).
Adjusts trigger price (TP/SL). new_leverage / add_collateral require a separate collateral deposit/withdraw and are recorded for tracking. Returns an UNSIGNED base64 tx to sign + broadcast. Past the daily free tier an x402 payment_header is required.
jurisdiction: modify (changes leverage/
exposure) is geo-gated too -- see perp_open_long.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-modifying the order.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| new_sl | No | ||
| new_tp | No | ||
| order_id | Yes | ||
| caller_id | No | ||
| jurisdiction | No | ||
| new_leverage | No | ||
| pay_in_crank | No | ||
| add_collateral | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses non-custodial execution, an unsigned base64 tx to sign and broadcast, x402 payment_header requirements past the free tier, separate collateral deposit/withdraw needs for leverage/collateral changes, jurisdiction geo-gating, and idempotency_key replay semantics. This is rich, relevant behavioral context that annotations alone do not provide.
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 front-loaded with the core action and then uses compact paragraphs for payment, jurisdiction, and idempotency details. Every sentence adds functional value; there is no filler or redundant restatement.
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 12-parameter tool with no output schema details shown, the description covers the most critical behavioral aspects: return format, payment requirements, jurisdiction limitations, collateral behavior, and retry semantics. Minor gaps remain around unexplained parameters like pay_in_crank, caller_id, and ip, but the overall context is sufficient for an agent to invoke the tool correctly in most cases.
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 compensates by explaining key parameters: new_tp/new_sl as TP/SL triggers, new_leverage and add_collateral as requiring separate collateral handling, jurisdiction geo-gating, and idempotency_key for replay behavior. However, not all 12 parameters are covered — pay_in_crank, caller_id, and ip are left without explanation.
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 'Modify an existing open Drift ORDER by order_id (non-custodial)', giving a specific verb, resource, and scope. It clearly distinguishes this from siblings like cancel_perp_order, close_perp_position, and perp_open_long by targeting existing open orders and TP/SL adjustments.
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 states when to use the tool: to modify an existing open Drift order by order_id, with prerequisites like the order being open and non-custodial. It also flags geo-gating for jurisdiction changes and points to perp_open_long, but it does not explicitly enumerate alternatives or exclusions such as cancel/close.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_open_longADestructiveInspect
Open a leveraged LONG perp position on Drift (non-custodial).
Returns an UNSIGNED base64 transaction for your wallet to sign + broadcast, plus entry/liquidation/margin estimates. market e.g. SOL-PERP. size_usd is notional USD; leverage up to the market max. TP/SL are informational in the build — place them as trigger orders after the position opens. The fee is charged on size_usd notional past the daily free tier (x402 payment_header).
jurisdiction: your ISO-3166-1 alpha-2
country code, self-declared -- perps are geo-gated (CFTC posture: no US
persons, unknown jurisdiction DENIED). Pass it once here (or via
declare_jurisdiction/trade_equity) and it is remembered for 90
days; every perps/short/leverage call is denied until declared.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-opening the position. Reuse the SAME key across the build call and
its signed_transaction completion call -- the two legs
dedupe independently (the completion leg is namespaced under its own
storage key, matching jupiter_swap's build/broadcast pattern), so this
never raises IDEMPOTENCY_CONFLICT; a NEW key means a genuinely new order.
signed_transaction / verify (two-phase execution):
re-call this tool with the SIGNED base64 tx and Crank broadcasts it, then
awaits on-chain confirmation and re-reads the perp position -- the response
carries a real verification block ({confirmed, slot, post_state,
expected_vs_actual}). Gate follow-on decisions on verification.confirmed,
never on tx_signature alone. verify=false skips only the confirmation wait.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| market | Yes | ||
| verify | No | ||
| leverage | Yes | ||
| size_usd | Yes | ||
| caller_id | No | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| stop_loss_price | No | ||
| allow_unverified | No | ||
| take_profit_price | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the sparse annotations. It discloses non-custodial transaction signing, the exact two-phase build/broadcast flow, fee mechanics, the 90-day jurisdiction memory, geo-denial policy, idempotent replay semantics, and verification response content. This aligns with destructiveHint=true and provides materially useful operational context.
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 long, but it is dense and sectioned by bolded parameter names, making it scannable. The first line delivers the core purpose. Some idempotency nuance is verbose, but it is justified by the risk of duplicate on-chain orders.
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, non-custodial, multi-phase perp tool, the description is nearly complete. It covers required fields, return behavior, geo constraints, idempotency, verification, and when to trust confirmation. Minor gaps include the unidirectional meaning of allow_unverified and pay_in_crank, and there is no explicit mention of the output schema's detailed shape, though the description includes the key verification block fields.
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?
Given 0% schema description coverage, the prose does heavy lifting: market example, notional size_usd, leverage limits, jurisdiction syntax/expiry, idempotency_key replay rules, signed_transaction/verify phase behavior, and TP/SL informational role are all explained. Some parameters like allow_unverified, pay_in_crank, caller_id, and ip remain undocumented, so it is not perfect, but the critical execution parameters are very well covered.
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 operation: open a leveraged LONG perp position on Drift, returns an unsigned base64 transaction, and gives entry/liquidation/margin context. It clearly differentiates from sibling perp_open_short and other perp order tools by direction and scope.
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?
Strong operational guidance: TP/SL are informational and must be placed after opening, jurisdiction is mandatory and geo-gated, idempotency key must be reused across build/completion, and gate decisions on verification.confirmed rather than tx_signature. It lacks an explicit paragraph naming alternatives like perp_open_short or place_perp_order, but the LONG framing makes the primary use case unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_open_shortBDestructiveInspect
Open a leveraged SHORT perp position on Drift (non-custodial).
Same envelope as perp_open_long, opposite direction. jurisdiction, idempotency_key (optional)
and signed_transaction/verify (two-phase execution):
see perp_open_long.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| market | Yes | ||
| verify | No | ||
| leverage | Yes | ||
| size_usd | Yes | ||
| caller_id | No | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| stop_loss_price | No | ||
| allow_unverified | No | ||
| take_profit_price | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=truehare this is destructive, key for a short opening. The description adds that it is non-custodial and leveraged, but it does not disclose execution risks (e.g., liquidation, slippage, or reversibility). With destructiveHint true, the description should clearly warn about potential losses or irreversible actions, which is missing.
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 brief and to the point, front-loading the core action and context. It efficiently references a sibling for shared details instead of repeating them, which is a good use of space. The only slight inefficiency is the parenthetical about idempotency_key being optional, which is already in the schema.
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?
With 15 parameters and 0% schema coverage, the description falls short. It does not explain the two-phase execution flow (signed_transaction/verify), stop_loss_price/take_profit_price, or the meaning of ip, caller_id, and other fields. An output schema exists, but the description still lacks critical details for an agent to call it correctly, especially since it is a destructive trading action.
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 explain parameters. It mentions jurisdiction, idempotency_key, signed_transaction, and verify, but does not define their meaning or syntax beyond referencing perp_open_long. Required params (wallet_address, market, size_usd, leverage) are not described, leaving the agent to infer their purposes from names.
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: opening a leveraged short perp position on Drift. It references its long counterpart and indicates shared parameters, which helps distinguish it from related tools like short_open. However, it does not explicitly name sibling tools beyond perp_open_long, so it is not fully differentiated from all similar perps.
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 points to perp_open_long for details on jurisdiction, idempotency_key, and two-phase execution, implying similar usage. It does not explicitly state when to use this tool versus alternatives like short_open or perp_close. The guidance is implicit and relies on the sibling description, which is a moderate gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_positionsARead-onlyIdempotentInspect
List open perp positions for a wallet with live P&L.
Each: market, side, size, entry/mark price, unrealized P&L (incl funding), liquidation price.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint) already provide safety info. The description adds useful behavioral context: live P&L, inclusion of funding in unrealized P&L, and the list of returned fields. 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 sentences, front-loaded with the main action, followed by bulleted fields. Every word adds value, no fluff.
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 has an output schema, so return values are covered externally. The description clearly explains what the tool does and the key fields, which is sufficient given the simple parameter set (2 params, 1 required) and the existing 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?
Schema coverage is 0%, and the description does not explain the 'caller_id' parameter (which has a default) or the 'wallet_address' format. It only implies 'for a wallet', which hints at wallet_address but does not fully compensate for the lack of schema descriptions.
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 lists open perp positions for a wallet with live P&L, and enumerates specific fields (market, side, size, prices, P&L). This is a specific verb-resource combination that distinguishes it from sibling tools like 'perp_positions_all' (likely broader scope).
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 checking a specific wallet's positions but offers no explicit guidance on when to use this tool versus alternatives (e.g., perp_positions_all, perp_funding_rates). No when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perp_positions_allARead-onlyIdempotentInspect
Open perp positions for a wallet. venue=None aggregates across venues.
Each position carries its venue + custody_tier. detail="concise" (default) trims each position to position_id/market/side/size/unrealized_pnl/venue (position_id is the ID to chain into close_perp_position); "full" adds entry_price/current_price/leverage/liquidation_price/custody_tier.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | No | ||
| detail | No | concise | |
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior, but no side-effect description is needed. The description adds genuinely useful behavioral context: venue=None changes aggregation, detail changes the returned fields, and position_id is chained into close_perp_position. This exceeds what the annotations and schema alone tell the agent.
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 compact and front-loads the operation before explaining optional behaviors. It avoids unnecessary filler while still explaining the important differences in venue and detail modes. A tiny bit more structure, such as labeling parameters explicitly, would make it fully polished.
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 rich annotations and the presence of an output schema, the description covers the necessary usage semantics for a safe, read-only tool. It tells the agent how venue=None behaves, how detail controls output, and why position_id matters for downstream action. It does not mention caller_id, but that is optional and secondary.
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 parameter documentation burden. It explains venue aggregation and detail modes in useful detail, including exactly which fields each detail level includes. It does not explain caller_id, which is an optional parameter, but the other parameters are meaningfully enriched beyond the raw 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 clearly identifies the resource as open perpetual positions for a wallet and explains the all-venues aggregation behavior. It is slightly ambiguous whether 'Open' is a verb or an adjective, but the read-only annotations and the focus on position details make the intent recoverable. It does not explicitly contrast with sibling perp_positions, so it stops short of a perfect 5.
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 the tool: venue=None aggregates across venues, which suggests this is for multi-venue position retrieval. However, it never explicitly states when to prefer this over a tool like perp_positions or how to limit to a single venue. There are no exclusions or named alternatives, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_perp_orderADestructiveInspect
Open a leveraged perp position on the best/selected venue (non-custodial).
side is "long" | "short". market e.g. SOL-PERP; size_usd is notional USD. venue optional -- defaults to the configured primary (Jupiter Perps), with health failover to the fallback for new orders. Returns an UNSIGNED tx (Tier A) or a signing payload (Tier B) for your wallet to sign + broadcast, plus venue_name / custody_tier / settlement_token. Tier B (venue-custodied) venues require acknowledge_tier_b=true after reviewing custody_disclosure. Fee charged on size_usd notional past the daily free tier (x402).
jurisdiction: your ISO-3166-1 alpha-2
country code, self-declared -- perps are geo-gated (no US persons, unknown
jurisdiction DENIED). Declare once here (or via
declare_jurisdiction/trade_equity) and it is remembered 90 days.
Workflow: EXECUTE step (leveraged directional leg) -- after get_venue_health / get_venue_risk_score clear the venue and get_risk_assessment caps the size. Monitor via perp_positions. See get_trading_workflow.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-opening the order. Reuse the SAME key across the build call and its
signed_transaction completion call -- the two legs
dedupe independently, so this never raises IDEMPOTENCY_CONFLICT; a NEW key
means a genuinely new order.
signed_transaction / verify (two-phase execution):
re-call this tool with the SIGNED payload and Crank relays it by custody
tier -- Tier A to Solana RPC, then awaits on-chain confirmation and
re-reads the position on the executing venue; Tier B to the venue's own
submit endpoint, which returns a venue order id (reported as
venue-acknowledged, since it is not an on-chain signature). Gate follow-on
decisions on verification.confirmed, never on tx_signature alone.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| side | Yes | ||
| venue | No | ||
| market | Yes | ||
| verify | No | ||
| leverage | Yes | ||
| size_usd | Yes | ||
| caller_id | No | ||
| order_type | No | market | |
| limit_price | No | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| stop_loss_price | No | ||
| take_profit_price | No | ||
| acknowledge_tier_b | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behaviors beyond the annotations: returns an UNSIGNED tx vs signing payload, Tier A/Tier B custody distinctions, fee-on-notional mechanics, geo-gating with 90-day jurisdiction memory, idempotency replay behavior, two-phase signed_transaction/verify execution, and the requirement to gate on verification.confirmed. The only mild wrinkle is the initial 'non-custodial' qualifier versus the later 'venue-custodied' Tier B, but the custody split is explicitly explained, so the agent is not misled overall.
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 long but every paragraph earns its place: summary, venue/custody returns, jurisdiction, workflow, idempotency, and two-phase execution. It is front-loaded with the core summary and then expands into purpose-specific details, making dense complexity navigable. No filler or tautological sentences are present.
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 an output schema exists and the operation is complex (custody tiers, jurisdiction gates, two-phase signing, venue failover, idempotency), the description covers all major behavioral and invocational context. It even points to supplementary workflow tools and positions users on what must happen before and after the call. Nothing essential to making a correct call seems missing.
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 most of the burden. It does add real value: explains side, market example, size_usd notional USD, venue defaulting/failover, jurisdiction format/self-declaration, idempotency_key semantics, signed_transaction/verify two-phase behavior, and acknowledge_tier_b requirement. However, a 19-parameter schema with several meaningful fields (leverage, order_type, limit_price, stop_loss_price, take_profit_price, pay_in_crank, etc.) is only partially elaborated, relying on parameter names to infer meaning.
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 begins with a specific verb and resource: 'Open a leveraged perp position on the best/selected venue.' It clearly states the side, market, size, venue, and return type, and distinguishes itself from close/cancel/modify siblings by focusing on opening new positions. The inclusion of 'best/selected venue' plus custody tiers also sets it apart from simpler perp_open_long/perp_open_short siblings.
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 explicit workflow context: it is the EXECUTE step after get_venue_health / get_venue_risk_score clear the venue and after get_risk_assessment caps size; positions are monitored via perp_positions; and the full workflow pointer to get_trading_workflow is provided. It does not explicitly say when not to use the tool (e.g., 'use perp_open_long instead when...'), so it misses the 'when-not/alternatives' level, but the workflow usage is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pledge_to_iloADestructiveInspect
Pledge to a token launch. PLAN MODE BY DEFAULT (non-custodial).
amount is in pledge-mint BASE UNITS (USDC is 6dp: 1_000_000 = 1 USDC).
Default (confirm=false) returns action: "plan" -- a preview that
evaluates every on-chain guard off-chain first (launch status, pledge
window, remaining capacity, per-wallet cap) plus the anti-sybil screen and
a pro-rata allocation projection. Nothing is built and nothing moves.
confirm=true returns action: "sign_required" with an UNSIGNED
base64 transaction you sign with your own wallet and broadcast yourself.
Crank never holds your keys. A pledge is irreversible once broadcast: the
on-chain refund path opens only if the raise fails its minimum.
Utility token fair launch -- this commits funds to a non-custodial escrow. It is not a purchase of any expectation of profit and confers no claim on issuer revenue. The technology service fee applies past the daily free tier (x402 payment_header; set pay_in_crank for the $CRANK discount).
idempotency_key (optional): a client-generated UUID. Retrying with the
same key + same args replays the original result instead of pledging twice.
US persons are blocked (Reg S-flavoured geo-posture, I4):
declare jurisdiction (ISO-3166-1 alpha-2) or rely on a stored
attestation; unknown jurisdiction is DENIED. confirm=true additionally
requires disclosures_acknowledged=true -- read the mandatory
pre-pledge disclosure block (get_ilo_details or a plan-mode preview)
first (I2).
Workflow: EXECUTE step -- get_ilo_details, then plan-mode preview, then confirm=true. Track it afterwards with get_my_pledge_status.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| amount | Yes | ||
| confirm | No | ||
| caller_id | No | ||
| launch_id | Yes | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| pledger_token_account | No | ||
| disclosures_acknowledged | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly discloses behavior beyond annotations: confirm=false returns a plan with 'Nothing is built and nothing moves,' while confirm=true returns an unsigned base64 transaction the user broadcasts. It also explains irreversibility, refund conditions, non-custodial custody, fees, geo-blocking, and idempotency. There is no contradiction 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?
The description is long but well-structured with paragraph breaks and inline code terms, making it scannable. Core behavior is front-loaded, followed by units, then safety/legal constraints, then workflow. Some legal and fee language lengthens it, but it is relevant for a committing financial transaction.
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 prerequisites, workflow, side effects, irreversibility, fees, jurisdictional restrictions, idempotency semantics, and where to get supporting information. Since an output schema is present, the description does not need to explain return values. Nothing critical for invoking the tool correctly is missing.
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, and it compensates for the most subtle parameters: amount units, confirm behavior, idempotency_key, jurisdiction, disclosures_acknowledged, payment_header, and pay_in_crank. Required fields like launch_id and wallet_address are not explicitly explained, and pledger_token_account is omitted, but their roles are largely inferable from the surrounding context.
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 specific verb and resource: 'Pledge to a token launch.' It then clearly distinguishes the two modes of action, plan-mode preview versus confirm-mode signing, so an agent understands exactly what the tool does. It also names related tools in the workflow, which differentiates this from read/status siblings like get_ilo_details and get_my_pledge_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 gives an explicit workflow: get_ilo_details, then plan-mode preview, then confirm=true, then track with get_my_pledge_status. It also states the mandatory prerequisite of disclosures_acknowledged for confirmation. It does not explicitly contrast against all possible sibling alternatives, but the ordering and prerequisites provide strong practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_agent_wallet_enableAIdempotentInspect
Poll a Lane 2 enablement request; provisions the wallet ONLY once approved.
On approval, applies the server-enforced conservative Lane 2 default policy (per-tx $50, daily $200, SOL+USDC only, 10% drawdown halt) and a 10-execution training-wheels counter, then returns the policy READ BACK from the server -- never the intended one.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| device_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses significant behavioral details: the wallet is provisioned only on approval, the server-enforced conservative default policy is applied (with specific limits), a 10-execution counter is added, and the tool returns the server's readback policy rather than the intended one. This adds valuable context beyond the annotations, which already indicate idempotency and non-destructiveness.
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 and well-structured: a short first sentence states the core purpose, followed by a compact paragraph detailing approval-side effects. Every sentence adds meaningful information without redundancy.
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 core action, the approval condition, policy specifics, and the surprising readback behavior. An output schema exists, so return values are covered elsewhere. However, it lacks guidance on obtaining the device_code and details about polling lifecycle expectations (e.g., timeouts or repeated calls), which leaves some minor gaps.
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 the description does not explain the meaning or purpose of device_code or caller_id. The phrase 'Poll a Lane 2 enablement request' implicitly suggests device_code identifies the request, but this is not explicit and does not adequately compensate for the total lack of schema documentation.
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 ('poll') and resource ('Lane 2 enablement request'), and clearly states the effect: provisions the wallet only once approved. This distinguishes it from sibling tools like poll_wallet_policy_loosening and enable_agent_wallet by tying polling to the enablement lifecycle.
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 a usage context: polling a pending Lane 2 enablement request. However, it does not explicitly state when to use this tool instead of alternatives such as poll_wallet_policy_loosening or approve_proposal, nor does it provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_agnta_grant_clearAIdempotentInspect
Poll a grant-clear request; clears the AGNTA grant ONLY once approved.
Returns {"status": "pending"} while waiting, {"status": "expired"} for an unknown/expired code (never fabricates approval), or on approval clears through the same rails clear_agnta_grant uses for a non-Lane-2 wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| device_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and idempotent nature, but the description adds crucial behavior: 'clears the AGNTA grant ONLY once approved' and 'never fabricates approval.' It also specifies return statuses (pending, expired, approval). This goes beyond annotations without contradicting them.
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 concise sentence followed by a clear breakdown of return values. It is front-loaded with the primary purpose and wastes no words. The structure is logical and easy to scan.
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?
An output schema exists, so return value details are not required. However, the description omits parameter explanations and gives only implicit usage guidance. It does cover key behavioral constraints (approval-only clear) and identifies the non-Lane-2 wallet context, but the lack of parameter semantics leaves a noticeable gap.
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 compensate for parameters, but it does not mention caller_id or device_code at all. The only parameter needed is device_code, yet its meaning or format is not explained. The description fails to add any value over the bare 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 clearly states the tool's purpose: 'Poll a grant-clear request; clears the AGNTA grant ONLY once approved.' It specifies the action (poll), the resource (grant-clear request), and differentiates from siblings like clear_agnta_grant (direct clear) and request_agnta_grant_clear (initiate request). It also notes it clears only on approval, which is distinctive.
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 typical usage after a request, and clarifies it's for a 'non-Lane-2 wallet' and uses the same rails as clear_agnta_grant. It does not explicitly state when not to use or name alternatives, but the contrast with request/clear tools is implied. This provides clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_session_signer_authorizationAIdempotentInspect
Poll a signer-authorization request; authorizes ONLY once approved.
Returns {"status": "pending"} while waiting, {"status": "expired"} for an unknown/expired code (never fabricates approval), or on approval binds the signer through the same rails authorize_session_signer uses and returns the created session_signer row.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| device_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides rich behavioral detail beyond the annotations: it returns pending/expired statuses, never fabricates approval, and on approval binds the signer and returns the created row. This adds substantial context to the idempotentHint and readOnlyHint=false 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 and well-structured: a single opening sentence for the primary action, followed by a clear breakdown of possible return states. Every sentence carries useful information with no 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?
For a polling tool with an output schema and idempotency annotations, the description covers all essential aspects: statuses, behavior on approval, and the fact that it never fabricates results. The tool is simple enough that this is 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?
Schema description coverage is 0%, so the description must compensate. It implicitly references device_code as 'code' but provides no explanation of the caller_id parameter, which remains entirely undocumented. The description adds some meaning for the required parameter but leaves a significant gap for the optional one.
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 this tool polls a signer-authorization request and only authorizes upon approval. It distinguishes itself from siblings like request_session_signer_authorization and authorize_session_signer by focusing on the polling/status-checking behavior and noting it uses the same rails as authorize_session_signer.
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: after requesting authorization, to poll status until approved or expired. It mentions the process and relationship to authorize_session_signer, but does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_wallet_policy_looseningAIdempotentInspect
Poll a policy-loosening request; applies it ONLY once approved.
Returns the policy READ BACK from the server after the write -- never the requested one.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| device_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool performs a write operation (applies the policy) once approved, and that the return value is the server's read-back policy, not the requested one. This adds meaningful behavioral context beyond the annotations, which only indicate non-read-only, idempotent, and non-destructive traits.
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 concise sentences with the key action and important caveat front-loaded. Every word adds value, and there is no redundancy or unnecessary detail.
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's simplicity and the presence of an output schema, the description covers the essential aspects: the side effect of applying once approved and the return value semantics. Some potential details like the nature of 'policy-loosening' or error conditions are omitted, but the core context is sufficient.
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 does not explain the 'device_code' or 'caller_id' parameters. With 0% schema description coverage, it fails to compensate for the lack of parameter documentation, leaving the agent to infer meaning from parameter names alone.
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 polls a policy-loosening request and applies it once approved, using a specific verb and resource. It distinguishes itself from sibling tools like 'request_wallet_policy_loosening' by describing the polling and applying behavior rather than the initial request.
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 the tool is used after requesting a policy loosening, to check approval status and apply the change. It provides clear context but does not explicitly mention alternatives or when not to use, though sibling names reinforce the intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio_snapshotARead-onlyIdempotentInspect
Full portfolio summary: positions, total value, allocation %, 24h change.
Persisted as a PortfolioSnapshot for historical tracking. detail="concise" (default) returns total_value_usd/change_24h_pct/snapshot_id + up to the top 10 positions (token/symbol/usd_value -- IDs for chaining); "full" returns every position with amount/price_usd and the complete allocation_pcts map, as before.
Workflow: ORIENT step -- the denominator for position sizing. Call before intelligence/risk so sizes are net of current holdings. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | concise | |
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide the read-only, idempotent, non-destructive profile, and the description adds real behavioral context: the difference between concise and full response shapes, the presence of snapshot_id and chaining IDs, and the note that it persists as a PortfolioSnapshot for historical tracking. No wording contradicts 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 compact and dense: purpose, response behavior, and workflow are all packed into three short, structured paragraphs. More information is front-loaded, labels like detail="concise" are clear, there is no fluff, and referencing get_trading_workflow avoids repeating workflow 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?
With an output schema present, the description does not need to repeat exact return fields. It covers what the snapshot is, how detail changes the output, how the returned IDs compose with other tools, and the correct ORIENT workflow position. Together this is enough for an agent to call and use it successfully.
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 compensate for the param meanings. It explains the critical detail parameter well, including default and response variants. However, caller_id and wallet_address are left undefined; wallet_address is inferable from the name but caller_id is not. The compensation is valuable but incomplete.
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 resource and output: a full portfolio summary with positions, total value, allocation %, and 24h change. It does not start with an explicit verb, but the intent is immediately unambiguous. It could distinguish itself more from siblings such as get_balances or equity_positions by name, so it misses a 5.
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 strong context for when to use this: it names the ORIENT step, says it is the denominator for position sizing, and explicitly advises calling it before intelligence/risk. It does not spell out exclusions or name alternatives (e.g., 'use get_balances when...'), so it earns a 4 instead of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_allocationARead-onlyIdempotentInspect
Ranked allocation plan: intent + balances + regime + yields + ML signals (free read).
One call composes the read-only surfaces an agent would otherwise orchestrate by hand -- lending supply APYs, LST staking yields, the per-asset market regime, and the ML ensemble signal -- into a ranked, intent-shaped plan (conservative | balanced | aggressive). Each directional entry names the exact backtest_strategy args to validate it BEFORE deploying, plus the follow-up tool that would act on it. Descriptive analytics only -- never advice, never a promise of results; nothing is executed.
Workflow: INTELLIGENCE/ANALYSIS step -- call after get_market_briefing and before backtest_strategy / get_risk_assessment / strategy_*_create.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | ||
| intent | No | balanced | |
| caller_id | No | ||
| timeframe | No | 1h | |
| wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it highlights the read-only nature ('free read', 'descriptive analytics only', 'nothing is executed'), mentions composition of multiple surfaces, and describes output details (each entry names backtest_strategy args and follow-up tool). This aligns with and enriches 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 front-loaded with the core purpose and efficiently conveys key points. However, it contains some redundancy (e.g., repeating read-only nature) and could be more concise. Overall, it is well-structured but slightly verbose.
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 tool's role, output nature, and workflow context well. However, with 5 parameters all lacking schema descriptions, the description does not fully explain input semantics. The presence of an output schema partly offsets return value documentation, but input parameter guidance is incomplete.
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 compensate. While it explains 'intent' with three levels (conservative, balanced, aggressive) matching the default, it does not describe other parameters (assets, caller_id, timeframe, wallet_address). The description uses 'assets' in context but lacks formal semantics. This is insufficient to guide an agent in parameter usage.
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 produces a 'ranked allocation plan' combining multiple signals (intent, balances, regime, yields, ML) and positions it as an intelligence/analysis step. The verb 'propose' matches the tool name, and the description explicitly differentiates it from sibling tools by specifying the workflow sequence.
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 explicit workflow placement: 'call after get_market_briefing and before backtest_strategy / get_risk_assessment / strategy_*_create'. It also clarifies it is a 'free read' and 'never advice', setting expectations. This gives clear guidance on when to use the tool and its role in the broader process.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_template_updateBRead-onlyIdempotentInspect
Propose a DRAFT strategy template from an emerging pattern.
PROPOSE-AND-APPROVE ONLY. Creates a draft template that is NOT published, NOT verified and NOT eligible for cloning; an administrator must explicitly approve it before it can appear in the marketplace. This tool can never publish, verify, or modify an existing live template, and never auto-applies anything. pattern_id comes from get_emerging_patterns; only an active, released pattern may be proposed. Descriptive historical observation -- not a recommendation, not financial advice, and not a promise of future results.
Workflow: PROPOSE step -- raise an observed emergent motif for human review; approval and any publication remain a human decision.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| caller_id | No | ||
| pattern_id | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation Contradiction: description says 'Creates a draft template' while annotations declare readOnlyHint=true, a direct conflict similar to a documented write operation marked read-only. Although the description adds useful lifecycle detail (not published, needs admin approval), the contradiction forces a 1.
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?
Well-structured with a clear lead, bold workflow label, and front-loaded constraints; however, the lifecycle and workflow points are restated several times ('PROPOSE-AND-APPROVE ONLY', 'Workflow: PROPOSE step', 'approval ... remain a human decision'), adding mild redundancy.
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 single-required-parameter tool with an output schema and rich annotations, the description covers lifecycle, constraints, and source. The main gap is the unexplained optional parameters, though these are non-essential for a basic correct call.
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. It explains pattern_id's source and eligibility constraint but says nothing about name, caller_id, or description; caller_id in particular has no inferable meaning from the description.
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?
Description opens with a specific verb and resource: 'Propose a DRAFT strategy template from an emerging pattern.' It distinguishes itself from publishing, verifying, or cloning by stating it creates only a non-published draft, and from siblings like approve_proposal/publish_strategy via 'PROPOSE-AND-APPROVE ONLY.'
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?
Provides explicit preconditions: pattern_id must come from get_emerging_patterns and be an active, released pattern. It states what the tool cannot do (publish, verify, modify live templates, auto-apply), but does not explicitly name the approval/publishing siblings as next steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_strategyAInspect
Publish a cloneable strategy config to the marketplace (the flywheel).
config_template is the parameter set others clone. anonymous=true omits the author. performance_summary is a factual metrics blob -- no return promises are stored or surfaced (hard rule 8). backtest_run_id attaches a verified backtest (on-chain attestation hash + leaderboard ranking). Equity (tokenized-security) strategies are excluded. Read/control-plane, free.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| anonymous | No | ||
| caller_id | No | ||
| description | No | ||
| strategy_type | Yes | ||
| backtest_run_id | No | ||
| config_template | Yes | ||
| performance_summary | No | ||
| author_wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses several behavioral traits beyond annotations: it states that performance_summary is a 'factual metrics blob -- no return promises are stored or surfaced (hard rule 8)', and that backtest_run_id attaches a 'verified backtest' with on-chain attestation. It also notes that publishing is not read-only (matching readOnlyHint:false), but does not fully describe all side effects or error conditions.
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 moderately lengthy but packs multiple relevant details into a few sentences. It is well-structured, with each sentence addressing a distinct aspect (purpose, parameters, exclusions, cost). It avoids verbosity, though some phrases (e.g., 'the flywheel') could be considered slightly redundant.
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's complexity (9 parameters, nested objects, output schema), the description is only partially complete. It covers key behavioral aspects and some parameter semantics, but does not address the output schema or provide a full picture of the request/response flow. It also omits explicit guidance on authentication or failure modes.
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 schema has 0% description coverage, so the description must compensate. It explains some parameters (config_template, anonymous, performance_summary, backtest_run_id) but leaves others like name, description, strategy_type, caller_id, and author_wallet_address unexplained. With 9 parameters and only partial explanation, the semantics are insufficient for reliable invocation.
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: 'Publish a cloneable strategy config to the marketplace.' It specifies the action (publish) and the resource (strategy config), and mentions the 'flywheel' context. This distinguishes it from related tools like clone_strategy or compose_strategy.
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 some usage constraints, such as 'Equity (tokenized-security) strategies are excluded' and mentions 'Read/control-plane, free' which hints at operational costs and classification. However, it does not explicitly compare against sibling tools like create_strategy or propose_template_update, so the 'when to use vs alternatives' guidance is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_agentCInspect
Register/refresh an agent's discovery profile in the Crank registry.
capabilities is a subset of swap|perps|lending|staking|strategies|signals| equity|onramp; supported_protocols e.g. ["mcp","a2a","x402"]. Idempotent on wallet_address (a PUBLIC key -- non-custodial). This is how other agents find you via the A2A Agent Card + Solana Agent Registry.
| Name | Required | Description | Default |
|---|---|---|---|
| contact | No | ||
| version | No | 1.0.0 | |
| caller_id | No | ||
| description | No | ||
| a2a_card_url | No | ||
| capabilities | No | ||
| display_name | No | ||
| mcp_endpoint | No | ||
| wallet_address | Yes | ||
| supported_protocols | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Idempotent on wallet_address' but the annotation idempotentHint is false, creating a direct contradiction. Additionally, the description provides some context (non-custodial, public key) but this is undermined by the inconsistency.
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 brief (2 sentences) and front-loaded with the main action. It packs relevant details (capabilities list, protocols, idempotency note) without redundancy. Minor improvement possible by structuring with bullet points.
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?
Despite having an output schema, the description lacks explanation of the Crank registry, the registration process, or side effects. With 10 parameters, a detailed breakdown is needed for correct invocation. The tool is part of a complex blockchain registry, so missing context reduces usability.
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%, requiring the description to compensate. Only capabilities and supported_protocols are partially explained (with example values), leaving 8 other parameters (e.g., wallet_address, display_name, description, contact, version, caller_id, a2a_card_url, mcp_endpoint) without any semantic context.
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 registers/refreshes an agent's discovery profile in the Crank registry and mentions specific fields like capabilities and supported protocols. It distinguishes from creating a wallet (create_agent_wallet) and updating profile (update_agent_profile) by focusing on discovery, but does not explicitly differentiate from siblings.
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 on when to use this tool versus alternatives like create_agent_wallet or update_agent_profile. The description implies usage for registering discovery but does not exclude other contexts or specify prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_counterparty_setAIdempotentInspect
Register/replace/clear the AGNTA counterparty allow-set for the caller's opted-in DelegationGrant (non-custodial control plane).
Persists to Django so the set survives an MCP process restart and is
visible to every process -- the follow-up to 's process-local
InMemoryCounterpartySetResolver. wallet_address must belong to an
AgentWallet with a non-blank agnta_grant_pda already configured
(opting in is a separate step, out of scope here); the target grant_pda
is always resolved from that wallet, never caller-supplied. members
is a list of base58 32-byte destination pubkeys the grant's
counterparty_root should allow -- pass an EMPTY list to CLEAR the
registered set, after which every transfer-class call naming an on-chain
destination for this grant fails closed.
expected_root (hex, optional but STRONGLY recommended): compare
against the grant's live on-chain counterparty_root (hex-encoded)
before calling this -- when given, a set that does not commit to it is
refused (INVALID_PARAMS) rather than silently registered, which would
otherwise surface later as a confusing AGNTA_GRANT_COUNTERPARTY_DENIED on
an unrelated transfer.
| Name | Required | Description | Default |
|---|---|---|---|
| members | Yes | ||
| caller_id | No | ||
| expected_root | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description substantially exceeds what annotations already convey: it discloses Django persistence across restarts, visibility across processes, fail-closed behavior for transfer-class calls after clearing, and the expected_root mismatch refusal behavior. It also clarifies that grant_pda is always resolved from the wallet and never caller-supplied, which is important security-relevant 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 dense but generally well-structured, front-loading the core purpose before prerequisites and failure behavior. It earns most of its length, though there is a broken phrase ('to 's process-local') and some redundancy between 'Register/replace/clear' and the later empty-list clearing explanation.
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 complex tool with domain-specific concepts, the description covers prerequisites, parameter meaning, clearing semantics, persistence, and failure modes, making it largely complete. The output schema presumably covers return values, so that omission is acceptable. Minor gaps remain: caller_id is unexplained, and the relationship to clear_agnta_grant or set_agnta_grant is not explicitly clarified.
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 carries the burden of explaining parameters and largely succeeds: wallet_address, members, and expected_root all receive meaningful semantics and usage guidance. The only gap is caller_id, whose purpose is left entirely to inference from its name and default 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 opens with a specific verb and resource: register/replace/clear the AGNTA counterparty allow-set for the caller's opted-in DelegationGrant. It names the exact object being manipulated and the domain, making the tool's intent unambiguous. It also distinguishes itself from related grant-clearing tools by focusing on the allow-set rather than the broader grant.
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 clear prerequisites: wallet_address must belong to an AgentWallet with a non-blank agnta_grant_pda, and opting in is explicitly called out as a separate out-of-scope step. It also explains when to clear the set via an empty members list. However, it does not explicitly name a sibling tool as an alternative or state when NOT to use this tool beyond the opting-in note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_integratorBInspect
Register an agent integrator by its payout wallet -- lands PENDING.
The Jupiter-integrator self-serve onboarding step. The profile earns NOTHING
until an admin approves it via set_integrator_share (anti-gaming
whitelist). Idempotent on wallet_address. Returns the integrator stats.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| agent_id | No | ||
| caller_id | No | ||
| contact_email | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims 'Idempotent on wallet_address', but the annotation idempotentHint is false, creating a direct contradiction. While the description adds context about the PENDING state and admin approval, the contradiction undermines trust and results in a score of 1.
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: four sentences that each add distinct value—purpose, context, idempotency, and return value. It is front-loaded with the key action and avoids extraneous 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?
Given the existence of an output schema, the return value is adequately handled. However, the optional parameters are not documented at all, and the idempotency contradiction with annotations reduces completeness. The description provides sufficient context for the core workflow but lacks full parameter coverage.
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 parameter meaning. It only hints at the purpose of wallet_address ('payout wallet') but leaves the other four optional parameters (name, agent_id, caller_id, contact_email) completely unexplained. This is insufficient.
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 verb 'Register' and the resource 'agent integrator', specifying it is done via the payout wallet. It distinguishes itself from sibling tools like set_integrator_share and get_integrator_stats by indicating it's the initial onboarding step that lands in PENDING state.
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 explicitly positions this as the self-serve onboarding step and explains the pending/admin approval flow. It implies when to use this tool (initial registration) but does not explicitly advise against using it in other scenarios or compare it to alternatives like set_integrator_share.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_referrerAInspect
First-touch bind an onboarded agent wallet to an approved integrator.
First-touch wins: a wallet already attributed to any integrator keeps that binding. Requires the integrator be approved; rejects a self-referral.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| referred_wallet_address | Yes | ||
| integrator_wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation but are sparse. The description adds behavioral details: first-touch wins (no override if already bound), rejection reasons, and the need for integrator approval. This extends beyond annotation info.
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 action, and contains no extraneous information. Every word 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?
Given the tool's simplicity and the presence of an output schema, the description covers the essential behavior and constraints. It lacks parameter-level detail but is otherwise complete for usage decisions.
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. However, it does not explain each parameter's purpose (e.g., mapping 'referred_wallet_address' to agent wallet, 'integrator_wallet_address' to integrator, or the optional 'caller_id'). The agent must infer from context.
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: 'bind an onboarded agent wallet to an approved integrator.' It includes 'first-touch wins' and distinguishes from sibling tools like register_agent and register_integrator by specifying the binding behavior and conditions.
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 explains when to use (first attribution) and when not (already bound, self-referral) with 'requires the integrator be approved; rejects a self-referral.' It does not explicitly mention alternative tools, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_webhookAIdempotentInspect
Register (or reactivate) a lifecycle-event webhook for a wallet (free control-plane write).
event_types is a non-empty subset of: pre_trade (advisory only, never
blocks a trade), post_trade, policy_violation, drawdown_warning,
strategy_executed. url is your https(s) receiving endpoint. secret is
YOUR OWN HMAC-SHA256 signing secret (8-128 chars) -- Crank never sends
or stores platform key material here (hard rule 1); you use it to
verify the X-Crank-Signature header on every delivered event (see
docs/WEBHOOKS.md). Re-registering the same (wallet_address, url) pair
updates its event_types/secret and reactivates it if it was
auto-disabled after repeated delivery failures.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| secret | Yes | ||
| caller_id | No | ||
| event_types | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent, non-destructive write. Description adds context: 'free control-plane write', re-registration updates/reactivates, auto-disable after delivery failures, and a security rule about secret handling. No contradictions 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?
The description is concise and front-loaded with purpose. It packs essential details without verbosity. Could be slightly more structured (e.g., bullet points) but remains clear and efficient.
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 presence of an output schema, not explaining return values is acceptable. The description covers all parameters, behavioral nuances, security notes, and re-registration logic. It is complete for a registration tool with this complexity.
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%, but the description compensates fully. It details event_types (lists allowed values with explanation), url (requires https), and secret (HMAC-SHA256, length 8-128, not stored by platform). It also explains the behavior for the wallet_address+url pair.
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: 'Register (or reactivate) a lifecycle-event webhook for a wallet'. It specifies the resource (webhook) and action (register/reactivate), and distinguishes itself from siblings like list_webhooks and delete_webhook.
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 specific guidance on event_types, url, and secret requirements, including constraints like 'non-empty subset' and 'https(s)'. It explains re-registration behavior. However, it does not explicitly state when not to use the tool or compare with other webhook tools beyond mentioning reactivation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_registry_installAInspect
Self-report an MCP-registry install/discovery event.
Producer for the registry_install inbound-artifact leg that
growth_metrics.organic_integration_candidates already
consumes: call this once, with your own stable caller_id, after your
server installs/discovers Crank via an MCP registry listing (Smithery,
PulseMCP, the official MCP registry). Writes a synthetic marker row --
moves no funds, never fee-gated, and is idempotent per-process (a repeat
call for the same caller_id is a documented no-op).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description helpfully discloses that this writes a synthetic marker row, moves no funds, is never fee-gated, and is a no-op on repeat calls with the same caller_id. However, this idempotency claim directly contradicts the annotation idempotentHint=false. Because the description contradicts a structured hint, behavioral transparency fails.
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 compact and front-loaded with the primary action. The pipeline reference is somewhat arcane, but it earns its place by connecting the tool to its consumer. Overall it is efficient with no 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?
With one optional parameter, an output schema, and clear statements about when to call, safety, and repeat behavior, the description is nearly complete. The main defect is the idempotency contradiction; otherwise an agent has enough context 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?
The schema provides only a type and default for caller_id with 0% description coverage. The description adds meaning by saying the caller_id should be your own stable identifier and that repeating the same caller_id is a no-op. It does not specify format or uniqueness constraints, but it compensates reasonably for a single optional parameter.
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 action ('Self-report'), the resource ('an MCP-registry install/discovery event'), and the specific pipeline context ('registry_install inbound-artifact leg'). It distinguishes this from generic registry or agent registration tools among the large sibling list.
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 gives explicit when-to-use guidance: call once after the server installs/discovers Crank via an MCP registry listing, and use a stable caller_id. It does not explicitly name alternatives or exclusions, but the context is specific enough for an agent to know when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_agnta_grant_clearAInspect
Open the browser-confirmation handshake to clear a Lane 2 wallet's AGNTA grant cap.
Call this when clear_agnta_grant refuses with BROWSER_CONFIRMATION_REQUIRED. Does NOT clear the grant -- returns a confirmation URL like request_wallet_policy_loosening; the wallet's OWNER must approve in their own browser (never in-chat). Poll with poll_agnta_grant_clear(device_code) once approved.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors beyond annotations: it does not clear the grant, returns a confirmation URL, and requires owner approval in their own browser (never in-chat). Annotations only indicate readOnly=false and openWorld=true, but the description adds crucial async and security context.
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 paragraph but information-dense with no redundancy. It front-loads the primary action, then provides necessary context and next steps. Every sentence adds value, making it concise despite length.
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 tool that initiates an async handshake, the description fully covers the workflow: when to call, what it returns (confirmation URL), who approves, and how to poll. It includes all necessary context for an agent to use it correctly, and the presence of an output schema further reduces the need to describe return format.
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 schema has two parameters, wallet_address (required) and caller_id (optional). The description clarifies that wallet_address identifies the target wallet's grant cap, giving it semantic meaning. However, caller_id is not explained, though it's minor with a default. Since schema coverage is 0%, the description compensates reasonably for wallet_address but not fully for caller_id, resulting in a slight deduction.
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: opening a browser-confirmation handshake to clear a Lane 2 wallet's AGNTA grant cap. It distinguishes itself from the sibling `clear_agnta_grant` (which actually clears) and `poll_agnta_grant_clear` (which polls). The verb 'Open' and specific resource make it 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?
Explicitly states when to call: "Call this when clear_agnta_grant refuses with BROWSER_CONFIRMATION_REQUIRED." It also clarifies what it does NOT do and directs to polling with `poll_agnta_grant_clear(device_code)`, providing clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_session_signer_authorizationAInspect
Open the browser-confirmation handshake to authorize a session signer.
The ONLY way to mint a session signer -- authorize_session_signer always refuses with BROWSER_CONFIRMATION_REQUIRED for every wallet. Does NOT authorize the signer -- returns a confirmation URL like enable_agent_wallet; the wallet's OWNER must approve in their own browser (wallet-signature gated, never in-chat). Poll with poll_session_signer_authorization(device_code) once approved.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| caller_id | No | ||
| expires_at | No | ||
| capabilities | No | ||
| signer_pubkey | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by explaining that the tool only returns a confirmation URL, never authorizes in-chat, and requires the wallet owner's browser approval. This is non-obvious behavioral context that complements openWorldHint=true and readOnlyHint=false.
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 dense but front-loaded with the core purpose and packs workflow, exclusions, and next steps into a few sentences. The long dash-and-semicolon sentence is a bit run-on and could benefit from bullet structure, but no sentence is wasted.
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 behavioral workflow is thoroughly covered and an output schema exists, so the description doesn't need to explain return values. However, the complete absence of input-parameter documentation for a six-parameter tool leaves an agent unable to correctly use optional fields, which is a significant completeness gap.
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 the description explains none of the six input parameters. Optional fields like capabilities, expires_at, label, and caller_id remain opaque; the only parameter-like reference, device_code, belongs to the polling tool, not this call.
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 — opening a browser-confirmation handshake for a session signer — and explicitly clarifies that it does not actually authorize the signer. It also distinguishes itself from authorize_session_signer and poll_session_signer_authorization within the same workflow.
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 gives explicit routing: this is the ONLY way to mint a session signer, authorize_session_signer always refuses with BROWSER_CONFIRMATION_REQUIRED, and the next step is to poll with poll_session_signer_authorization(device_code). This is strong, actionable when-to-use guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_wallet_policy_looseningAInspect
Open the browser-confirmation handshake to loosen a Lane 2 wallet's policy.
Call this when set_wallet_policy refuses a change with BROWSER_CONFIRMATION_REQUIRED. Does NOT apply the policy -- returns a confirmation URL like enable_agent_wallet. Poll with poll_wallet_policy_loosening(device_code) once the user approves.
| Name | Required | Description | Default |
|---|---|---|---|
| policies | Yes | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations. It explains that the tool opens a handshake, does not apply the policy, returns a confirmation URL, and requires polling for completion. This aligns with annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false) without contradiction, and gives the agent a clear model of the tool's stateful side effects.
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 three sentences, front-loaded with the primary purpose, followed by usage context and next-step guidance. Every sentence contributes unique information with no wasted words or redundancy.
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's complexity (a two-step handshake flow) and the presence of an output schema (so return values need not be explained), the description covers the essential context: when to trigger it, what it does not do, what it returns, and how to proceed. It is complete for the agent to correctly invoke and use the tool in the broader workflow.
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 the description provides no details about the parameters (wallet_address, policies, caller_id). It does not explain what 'policies' should contain, how to structure the request, or the role of caller_id. The description fails to compensate for the lack of schema documentation, making parameter usage ambiguous.
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: 'Open the browser-confirmation handshake to loosen a Lane 2 wallet's policy.' It uses a specific verb and resource, and distinguishes itself from siblings like poll_wallet_policy_loosening and set_wallet_policy by explaining it initiates a handshake rather than applying the policy.
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 explicit when-to-use context: 'Call this when set_wallet_policy refuses a change with BROWSER_CONFIRMATION_REQUIRED.' It also clarifies what the tool does not do ('Does NOT apply the policy') and names the follow-up action ('Poll with poll_wallet_policy_loosening(device_code)'), providing clear usage boundaries and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_session_signerAIdempotentInspect
Instantly revoke a delegated session signer (non-custodial control plane).
Single atomic DB UPDATE -- the gate resolves the row fresh on every call with no cache, so this is enforced on the very next call using signer_pubkey. No TTL/cache window.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| signer_pubkey | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by detailing the atomic update, the fresh resolution per call, and the lack of cache/TTL window. It transparently indicates that revocation takes effect immediately on the next call, which is a critical behavioral trait. No contradiction with annotations (destructiveHint: false is consistent with a non-destructive state change).
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, with a clear first sentence stating the core purpose and a second sentence providing technical details. It avoids fluff and is well-structured, making it easy for an agent to parse quickly.
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 provides sufficient context for the tool's role in the session signer workflow, mentioning non-custodial control plane and the immediate enforcement. It doesn't cover error cases or return values, but since no output schema is provided, that's not a major gap. It also assumes domain knowledge of 'session signer', which is acceptable given the sibling tools list.
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 explains that 'signer_pubkey' is used as the identifier, providing meaning for that required parameter. However, it does not mention 'caller_id' at all, leaving its purpose unclear. Since schema coverage is incomplete (only one of two params is addressed), the description adds partial value but not full parameter semantics.
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 action ('revoke a delegated session signer') and the resource ('session signer'). It distinguishes from siblings like authorize or list by focusing on revocation, so an agent can easily understand the tool's purpose.
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 explains when to use this tool by emphasizing its immediacy ('instantly') and atomicity ('single atomic DB UPDATE'). It doesn't explicitly contrast with alternatives, but the name and context make it obvious that it's for revoking signers, not for listing or authorizing. Minor gap: it doesn't state conditions like 'only for existing signers' or mention that list_session_signers should be used for querying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsARead-onlyIdempotentInspect
Keyword search over the full Crank tool catalog (progressive disclosure).
Read-only, free, never gated. Purpose-built for a discovering agent that does not want to load the full tool catalogue into context just to find the one it needs ( R1 -- the Solana Agent Kit V1 failure mode: 60+ tools in context caused tool-selection hallucinations). Pass a keyword or short phrase (e.g. "perp funding rate", "stake sol", "referral"); matches rank by keyword overlap against each tool's name + description.
Returns up to limit (default 10, max 50) results, each
{name, purpose, toolset} -- purpose is a one-line summary
(call the tool itself, or get_trading_workflow, for the full
picture), and toolset names which of the ten named toolsets
(market_data, spot, perps, lending_staking, portfolio, strategies,
intelligence, rewards_growth, wallet_admin, support) the tool belongs
to. No tool is renamed or hidden by this search -- it is purely a
discovery aid.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 substantial behavioral context: it is 'free, never gated,' ranks by keyword overlap, returns up to `limit` results, specifies the result shape `{name, purpose, toolset}`, and explicitly states that no tool is renamed or hidden by the search. It even provides design rationale tied to a past failure mode.
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 longer than average but highly information-dense, beginning with the core purpose and flowing through usage, return format, and caveats. The R1 reference adds useful rationale but is slightly verbose; still, nearly every sentence contributes to correct usage.
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?
Despite having no schema-level descriptions and three parameters, the description fully covers query semantics, limit behavior, output format, toolset names, and the scope of the search. With an output schema present and annotations covering safety/idempotency, nothing an agent needs to correctly call this tool is missing.
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 does so for `query` ('keyword or short phrase... matches rank by keyword overlap') and `limit` ('returns up to limit (default 10, max 50)'). However, `caller_id` is not explained, leaving one of three parameters undocumented.
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 precise statement: 'Keyword search over the full Crank tool catalog (progressive disclosure).' It names the specific resource (the Crank tool catalog), the operation (keyword search), and clearly frames the tool as a discovery aid, which distinguishes it from the many actual trading/operation siblings.
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 explains exactly when to use this tool: when a discovering agent does not want to load the full catalog into context, and directs the user to alternatives for deeper information: 'call the tool itself, or get_trading_workflow, for the full picture.' It also clarifies what it is not for: 'purely a discovery aid,' and that no tool is renamed or hidden.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_token_socialADestructiveInspect
Send tokens to an X handle via a claimable crank.ing link (non-custodial).
Locks amount (base units) of token (mint) from sender_wallet into
the on-chain claim escrow against a fresh claim code, and returns an UNSIGNED
base64 transaction for the sender to sign + broadcast, plus the
crank.ing/{code} claim link and the claim_code (the bearer secret to embed in
the announcement tweet). Whoever presents the code claims the tokens and
binds referral on their first claim. expiry_days (optional, default 7,
range 1-90) sets the claim window; unclaimed tokens are returned to the sender
after expiry. Anti-abuse gated: sender account age, verified wallet,
per-sender daily limit. platform: x.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result (same
claim_code/link) instead of locking a second escrow.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| amount | Yes | ||
| platform | No | x | |
| referral | No | ||
| caller_id | No | ||
| expiry_days | No | ||
| sender_wallet | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| recipient_handle | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses substantial behavioral detail: tokens are locked into an escrow, an unsigned base64 transaction is returned, a claim_code acts as a bearer secret, expiry_days controls the claim window, unclaimed tokens return to sender, and anti-abuse limits apply. It also explains the optional idempotency_key replay semantics, which annotations alone do not capture. No contradiction with 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?
The description is front-loaded with a clear one-sentence purpose and then organizes related detail: escrow flow, claim code, expiry, gating, and idempotency. It is dense but every clause adds meaningful information; minor redundancy exists around the claim link and claim_code.
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 complex, state-changing tool with an output schema, the description covers the lifecycle, constraints, and idempotency behavior in enough detail for an agent to invoke it correctly in most cases. The main gap is the unexplained allow_unverified and caller_id parameters, which an agent may need to handle 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 0% schema description coverage, the description compensates well by explaining amount as base units, token as mint, sender_wallet, expiry_days with default and range, referral binding, and idempotency_key. It does not explain allow_unverified or caller_id, and handle/wallet formats are left implicit, so it is strong but not complete.
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 first sentence names a specific action and mechanism: 'Send tokens to an X handle via a claimable crank.ing link (non-custodial).' This is a specific verb+resource that clearly distinguishes the tool from bulk_send_social by the singular recipient and the claim-link mechanism, even without naming alternatives.
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 solid context for what the tool does, including the non-custodial flow, platform x, and anti-abuse gating. However, it does not explicitly state when to prefer this over bulk_send_social or when not to use it, leaving some routing decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_agnta_grantAIdempotentInspect
Opt a wallet into an AGNTA DelegationGrant spend/scope cap (non-custodial control plane).
Validates grant_pda decodes as a base58 32-byte address, the on-chain account exists and decodes as a DelegationGrant, it is not revoked and not expired, and its delegate matches wallet_address -- every failure raises INVALID_PARAMS with a distinct message. Adds an ADDITIONAL cap enforced alongside (never replacing) WalletPolicy on every subsequent value-bearing call for this wallet -- always TIGHTENS enforcement, so it applies directly for every wallet, Lane 2 included.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| grant_pda | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal this is a non-read-only, non-destructive, idempotent operation, but the description adds substantial behavioral context: exact validation steps, distinct INVALID_PARAMS failures, the 'always TIGHTENS enforcement' effect, and that it applies to Lane 2. This goes well beyond the structured 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 longer than average but every sentence adds operational value: purpose, validation behavior, and side-effect semantics are all present. It is front-loaded with the main action and then details consequences, with no filler 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 complex write operation, the description covers validations, failure modes, and the precise policy interaction, and the output schema covers return shape. It is missing only explicit usage routing and caller_id semantics, which keeps it from being fully 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?
Schema description coverage is 0%, so the description carries the burden. It richly explains grant_pda (base58 32-byte address, on-chain DelegationGrant, not revoked/expired, delegate match) and wallet_address (the wallet being opted in). However, caller_id is not described at all, leaving one parameter semantically undocumented.
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 specific verb and resource: 'Opt a wallet into an AGNTA DelegationGrant spend/scope cap.' It clearly distinguishes this from siblings like clear_agnta_grant and set_wallet_policy by explaining it adds an additional, non-replacing cap.
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 the tool — when you want to enforce an additional DelegationGrant cap without replacing WalletPolicy — but it never explicitly names alternatives or states when not to use it. The distinction from set_wallet_policy is implied through 'never replacing', not stated as a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_alertAInspect
Create a price/position alert checked every 60s by Celery beat.
alert_type: price_above | price_below | position_change. token is a mint address. Optional webhook_url is POSTed when the alert fires.
Free (no technology service fee) -- a control-plane write, moves no funds and has no transaction notional.
Workflow: MONITOR step -- arm after executing so a tripped level loops you back to the risk/execute phase. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| caller_id | No | ||
| threshold | Yes | ||
| alert_type | Yes | ||
| webhook_url | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false (write) and destructiveHint=false (not destructive). The description adds meaningful depth: it specifies the alert is 'checked every 60s by Celery beat', that it is a 'control-plane write' moving no funds and no transaction notional, and that webhook_url is POSTed on firing. This goes beyond the annotation flags to explain the operational impact.
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 efficient, starting with the core purpose then adding parameter clarifications, cost note, and workflow context. Each sentence serves a distinct purpose. The structure is scannable with line breaks for each key element. It could be slightly tightened, but it is well-organized without redundancy.
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?
An output schema exists (not shown) so return values are covered. The description provides the alert-checking cadence, workflow placement, and cost implications. It does not mention permission requirements or wallet existence prerequisites, but the workflow pointer and parameter details are sufficient for an agent to call it correctly in most contexts. The presence of a sibling set_liquidation_alert suggests potential overlap, but the description gives enough to distinguish general alerts.
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 compensate. It explains alert_type with valid values, token as a mint address, and webhook_url as the target for POST on fire. However, it does not explain threshold, wallet_address, or caller_id. While threshold might be obvious as the price level, wallet_address and caller_id remain ambiguous. With six parameters and half unaddressed, the description falls short of the heavy lifting required.
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 'Create a price/position alert' – a specific verb and resource. It enumerates the alert types (price_above, price_below, position_change) and clarifies token as a mint address, making the tool's purpose unambiguous. It distinguishes itself from siblings like set_liquidation_alert by focusing on general price/position alerts, though it doesn't explicitly name the alternative.
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 a workflow instruction: 'Workflow: MONITOR step -- arm after executing so a tripped level loops you back to the risk/execute phase. See get_trading_workflow.' This tells the agent when to use the tool in the trading lifecycle. It doesn't contrast with alternatives like set_liquidation_alert, but it provides clear contextual usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_liquidation_alertAInspect
Arm a liquidation alert: notify when a lending obligation's health factor falls to or below threshold.
protocol: kamino | marginfi (marginfi_account required for marginfi). threshold is the HF level (e.g. 1.2 warns before the <1.0 liquidation point). Evaluated every 30s by Celery beat; webhook_url is POSTed on trip.
Workflow: MONITOR step -- arm after opening a leveraged/borrow position so a deteriorating obligation loops you back to repay/de-risk. Pairs with get_health_factor. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | ||
| protocol | Yes | ||
| caller_id | No | ||
| threshold | Yes | ||
| webhook_url | No | ||
| wallet_address | Yes | ||
| marginfi_account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, etc.), the description adds that alert is evaluated every 30 seconds by Celery beat and POSTs to webhook_url on trip. It explains threshold semantics and protocol constraints, providing rich behavioral context.
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 well-organized and front-loaded with purpose, then details, then workflow. Every sentence adds value, but there is slight redundancy (e.g., 'protocol: kamino | marginfi' could be integrated). Overall efficient.
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 parameter count (7) and output schema present, the description covers core functionality, workflow, and constraints. It lacks explicit handling of optional parameters (market, caller_id), but the essential behavior and context are well-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 coverage, the description compensates well for core parameters (protocol, threshold, wallet_address, marginfi_account). It explains threshold meaning and protocol-specific requirements. However, it does not explicitly describe market, caller_id, or webhook_url beyond mentioning webhook_url is POSTed.
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 arms a liquidation alert with a specific condition (health factor falls to or below threshold), protocol choices, and evaluation mechanism. It distinguishes itself from siblings by specifying the exact use case and protocol.
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 explicitly states when to use this tool: after opening a leveraged/borrow position in a MONITOR step. It pairs with get_health_factor and references get_trading_workflow. It also notes protocol-specific requirements (e.g., marginfi_account for marginfi).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_ooda_consentAIdempotentInspect
Opt in/out of the wake-on-condition worker.
Default OFF. When opted in, a triggered alert may run a metered background check (Haiku triage, escalating to Sonnet only if worth a closer look) and propose one action. daily_wake_budget (default 10, 1-500) hard-caps metered wakes per day. The worker never executes -- every proposal is approved in your own wallet. See get_ooda_status for wake history including skipped wakes.
Usage-vs-fee-revenue kill threshold: wakes auto-suspend if inference spend over kill_window_days (default 30 days) exceeds kill_threshold_ratio (default "0.5") of attributed fee revenue. kill_threshold_enabled lets you disable the check for this wallet; kill_threshold_ratio is a decimal string. All three are optional -- omit to leave the existing/default value untouched. See get_ooda_status for whether/why a wallet was auto-killed (kill_switched_at, kill_reason).
Workflow: consent step -- run once (or to change budget/kill config) before wakes can fire; check get_ooda_status afterward to confirm state.
| Name | Required | Description | Default |
|---|---|---|---|
| opted_in | Yes | ||
| caller_id | No | ||
| wallet_address | Yes | ||
| kill_window_days | No | ||
| daily_wake_budget | No | ||
| kill_threshold_ratio | No | ||
| kill_threshold_enabled | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description explains the consent mechanism (run once), the reversible nature (consent=false withdraws it), external authorization removal, budget caps, and cost attribution. Annotations provide no readOnly/destructive hints, so the description carries full burden and does well. Minor gap: doesn't state what happens to in-flight metered checks when consent is revoked, or whether `opted_in` is the exact field name for withdrawal vs the top-level boolean.
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?
4 sentences, front-loaded with the core opt-in/off mechanic Mend. The instructions are clear but the narrative drifts into revenue attribution details (kill threshold, wallet spend attribution) that could be truncated. It's dense but not bloated; the spend-cap and escalation behavior are relevant but cost semantics could be condensed.
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?
Good write-up of consent lifecycle (opt-in, budget caps, reversibility, external authorization revocation) and cost limits, plus a pointer to get_ooda_status to inspect current state. However, the description references fields (daily_wake_budget, kill_window_days, kill_threshold_ratio, kill_threshold_enabled) that receive no precise type/format/default detail, and it omits what the response contains, even though output schema is absent.
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% – no parameter is described in the description. It mentions caller_id (email) as needed and daily_wake_budget, but the description seems to describe a different signature than the schema (calls it 'set_ooda_consent' with daily_wake_budget, whereas the tool name is 'set_ooda_consent' — actually it's 'set_ooda_consent' for wallet, caller_id, opted_in, kill_window_days? Wait the schema has kill_window_days but description mentions daily budget. There is a mismatch: the description references daily_wake_budget which exists in schema, but also mentions weekly spend cap which maps to kill_window_days? Not clearly. It doesn't name most parameters or explain their semantics.
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 specific verb phrase — 'Opt in/out of the wake-on-condition worker' — naming the exact resource (wake-on-condition worker) and the operation. It clearly states the tool sets consent for a background process belayed to the named tool. The verbs, opt in/out, are unambiguous and the resource is precise. The description also contrasts with related sibling mutations (e.g., kill_wallet, set_wallet_policy) implicitly by scoping to consent, not wallet policy.
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 explicitly says 'run once (or to change consent)' and describes the intended cadence, which is clear usage guidance. It also points to get_ooda_status to inspect consent state. This is explicit and actionable — an agent can decide when to call this tool and when to call get_ooda_status instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_permission_modeAIdempotentInspect
Change an agent wallet's session permission mode (non-custodial control plane).
Ports Claude Code's plan/acceptEdits/bypassPermissions ladder to a wallet with signing power. mode: observe (deny every mutating tool outright, PERMISSION_MODE_BLOCKED) | propose (mutating tools return a PROPOSAL envelope -- proposal_id + params + summary -- instead of executing; approve within the TTL via approve_proposal) | auto_within_policy (execute immediately, still capped by every configured WalletPolicy -- the pre-R9 default). Also settable inline via set_wallet_policy's permission_mode param. The transition is logged as an AgentTransaction audit row.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite the annotations (readOnly=false, destructive=false, idempotent=true), the description adds rich behavioral detail: explains what each mode does to mutating tools (deny, propose, execute), mentions the audit row logging, and notes that auto_within_policy is capped by WalletPolicy. This goes beyond the annotations and provides critical context for the agent.
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 dense but efficient, covering the action, the ladder, the mode semantics, the alternative, and the audit log in a compact paragraph. Every sentence adds value with no 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 tool is complex (three modes with different execution paths), and the description covers all of them with precise semantics, including the proposal flow and the policy cap. It also connects to sibling tools (set_wallet_policy, approve_proposal) and to the audit log. The only missing context is caller_id, but the overall completeness is high.
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 input schema has no descriptions (0% coverage), so the description carries the burden. It thoroughly explains the 'mode' parameter with its three values and their effects. 'wallet_address' is self-explanatory. However, 'caller_id' is never mentioned, which is a minor gap for an optional parameter.
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 immediately states the core function: 'Change an agent wallet's session permission mode'. It specifies the resource (wallet session permission mode) and the verb (change). It also distinguishes itself from sibling set_wallet_policy by noting the permission_mode can be set inline there, and references approve_proposal for the propose mode.
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 mentions an explicit alternative: 'Also settable inline via set_wallet_policy's permission_mode param.' However, it doesn't explicitly state when to prefer this tool over that alternative, nor give exclusions. Still, it implies use for directly changing the session permission mode ladder.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_portfolio_charterAInspect
Write a new version of the wallet's portfolio charter (free control-plane write).
Creates a new active version -- the prior version stays in history,
never deleted (versioned mandate, not an in-place overwrite).
risk_band is one of conservative|balanced|aggressive. banned_tokens
merge into AgentWallet.evaluate_trade as an ADDITIONAL deny source
alongside WalletPolicy.banned_tokens -- an active WalletPolicy always
wins when it is the stricter rule; a charter can never loosen an
existing policy, and a conflict comes back in the response's
warnings (logged server-side, never silently dropped).
target_allocations is {token: percent}, must sum to <=100.
objectives/cadence are free-form parameters -- never phrase them as
return promises (hard rules 5-8).
Workflow: ORIENT step 0 -- set once at the start of a relationship with an agent/wallet; strategies read it on every execute_strategy tick (see get_trading_workflow).
| Name | Required | Description | Default |
|---|---|---|---|
| cadence | No | ||
| caller_id | No | ||
| risk_band | No | ||
| objectives | No | ||
| banned_tokens | No | ||
| body_markdown | No | ||
| wallet_address | Yes | ||
| max_position_pct | No | ||
| escalation_webhook | No | ||
| target_allocations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Provides extensive behavioral details: creates new active version, prior version stays, never deleted; explains banned_tokens merge logic, conflict resolution with WalletPolicy, and warnings. Also notes objectives/cadence are free-form with no return promises. Annotations (readOnlyHint=false, destructiveHint=false) are consistent and description adds much more context.
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?
Description is long but well-structured with paragraphs. Front-loads main purpose. Every sentence adds value, though could be slightly more concise.
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?
Covers versioning, policy interaction, workflow, and warnings. Output schema exists, so return values need not be explained. Missing details on a few parameters but overall complete for a write operation.
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?
Though schema description coverage is 0%, the description explains meaning of risk_band, banned_tokens, target_allocations, objectives, and cadence. However, parameters like caller_id, body_markdown, max_position_pct, escalation_webhook are not covered. Overall, adds significant semantic 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?
Description starts with 'Write a new version of the wallet's portfolio charter', clearly stating its purpose. It distinguishes itself from sibling tools like get_portfolio_charter by being a write operation, and positions it within the ORIENT workflow.
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?
States 'Workflow: ORIENT step 0 -- set once at the start of a relationship with an agent/wallet', providing explicit when to use. Describes how strategies read it, but does not explicitly mention when not to use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_wallet_policyAIdempotentInspect
Configure the caller's own trading limits and rules on an agent wallet.
policies: a list of {policy_type, value, enabled?} objects. policy_type is one of max_trade_size {"usd"} | daily_limit {"usd"} | approved_tokens {"tokens"} | banned_tokens {"tokens"} | position_limit {"usd"} | kill_switch {"active"} | drawdown_limit {"max_pct"} | max_daily_loss {"usd"} | trade_velocity {"max_per_hour", "max_per_day"} | venue_allowlist {"venues"}. Upserts by policy_type; returns the full updated policy set. (Perp leverage cap is a separate follow-up, -- not a policy_type here.) On a Lane 2 wallet, a change that would LOOSEN a server-enforced default raises BROWSER_CONFIRMATION_REQUIRED -- call request_wallet_policy_loosening instead.
| Name | Required | Description | Default |
|---|---|---|---|
| policies | Yes | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by specifying upsert semantics and that the full updated policy set is returned. It also discloses the Lane 2 exception behavior with BROWSER_CONFIRMATION_REQUIRED. Annotations already indicate readOnlyHint=false, idempotentHint=true, and destructiveHint=false, and the description aligns with them, adding valuable 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 dense but appropriately structured: it opens with the purpose, then details the policies format, then behavior, and ends with the exception. Every sentence carries information, though the typo ('follow-up, --') slightly mars otherwise clean presentation. It is not overly long for the complexity it manages.
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's complexity—multiple policy types, upsert semantics, and conditional exceptions—the description covers everything an agent needs to call it correctly. It explains the policy types, the behavior, the return value, and the alternate tool for loosening. The existence of an output schema means return-value details are unnecessary, and the description is complete for this level of complexity.
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 compensates by thoroughly explaining the policies parameter: the structure of objects, the enum of policy_type with its accepted value keys, and the optional enabled field. wallet_address is self-explanatory, and caller_id, though not described, is optional with a default and its purpose is inferable. The main parameter is well covered, though the others rely on name intuition.
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 configures trading limits and rules on an agent wallet, specifying a precise verb and resource. It distinguishes itself from the sibling tool request_wallet_policy_loosening by explicitly naming the alternative condition, and it narrows the scope to the caller's own wallet, eliminating ambiguity.
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?
Explicit guidance is given: on a Lane 2 wallet, if a change would loosen a server-enforced default, the agent should call request_wallet_policy_loosening instead. The description also notes that perp leverage cap is not a policy_type here, preventing misuse. This directly addresses when to use this tool versus alternatives and when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_closeADestructiveInspect
Close a tracked short: buy token -> repay loan -> withdraw collateral.
Returns an ORDERED STEP PLAN + exit price. short_id from short_open. Past the daily free tier an x402 payment_header is required.
jurisdiction: closes are geo-gated too --
see short_open.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-closing the short.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| market | No | ||
| short_id | Yes | ||
| caller_id | No | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| slippage_bps | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| buy_with_amount | No | ||
| idempotency_key | No | ||
| marginfi_account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as non-readonly and destructive. The description adds meaningful behavior beyond that: it returns an ordered step plan and exit price, requires a payment header past the free tier, notes geo-gating, and explains idempotency replay semantics. 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?
The description is compact, front-loaded with the core action, and uses clear section markers for returns and key parameters. Every sentence adds value, though the markdown formatting could be slightly cleaner.
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 12-parameter, multi-step financial operation, the description is thin. It overlooks critical operational details like how buy_with_amount interacts with market pricing, the role of slippage_bps, and whether pay_in_crank affects execution. The output schema may help, but the description alone is insufficient for reliable invocation.
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 carry the semantic weight. It explains only idempotency_key, jurisdiction, and a passing mention of short_id and payment_header, leaving the other 8 parameters (e.g., buy_with_amount, slippage_bps, marginfi_account, pay_in_crank) completely undocumented in both schema and description. This is a significant gap.
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 clear verb ('close') and resource ('tracked short'), then breaks the action into an ordered step sequence (buy token, repay loan, withdraw collateral) and notes the return value (ordered step plan + exit price). This is specific and distinguishes it from siblings like short_open and short_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?
It provides practical usage context: short_id comes from short_open, a payment_header is required beyond the free tier, jurisdiction geo-gating is inherited from short_open, and idempotency_key enables replay. It does not explicitly contrast with sibling tools, but the guidance is sufficient for an agent to know when and how to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_openADestructiveInspect
Open a lending-based short: deposit collateral -> borrow token -> sell.
Returns an ORDERED STEP PLAN of UNSIGNED base64 txs to sign + broadcast in sequence, plus entry price + health factor + a short_id for tracking. All amounts in base units. The shorted token is authenticity-verified first; set allow_unverified=true to short an unverified mint at your own risk. Past the daily free tier an x402 payment_header is required.
jurisdiction: your ISO-3166-1 alpha-2
country code, self-declared -- synthetic shorting is geo-gated (no US
persons, unknown jurisdiction DENIED). Declare once here (or via
declare_jurisdiction/trade_equity/perps tools) and it is
remembered 90 days.
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-opening the short.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| market | No | ||
| protocol | No | kamino | |
| caller_id | No | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| slippage_bps | No | ||
| borrow_amount | Yes | ||
| payment_header | No | ||
| token_to_short | Yes | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| collateral_token | Yes | ||
| marginfi_account | No | ||
| collateral_amount | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, aligning with the description's clear statement of a multi-step action that deposits, borrows, and sells (destructive operations). The description adds significant behavioral context beyond annotations: it reveals the ordered step plan output, authenticity verification, geo-gating rules, and idempotency behavior. It doesn't contradict annotations; rather, it enriches them with details about the process and requirements.
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 detailed but organized: the opening line gives a clear summary, followed by a concise description of the return value, then a dedicated paragraph for jurisdiction, and finally a short note on idempotency. While long, it front-loads the most critical information (what it does, what it returns) and keeps details in separate, readable paragraphs, making it efficient for an agent 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?
Given the tool's complexity (16 parameters, no schema coverage, no enums), the description is remarkably complete. It covers output format (ordered step plan, base64 txs, entry price, health factor, short_id), execution details (authenticity verification, payment requirements), and critical constraints (geo-gating, idempotency). While it omits some parameter specifics, the overall guidance is sufficient for an agent to understand and invoke the tool 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 schema description coverage at 0%, the description must compensate, and it does for several key parameters: it explains jurisdiction (with country code and geo-gating details), idempotency_key (UUID for replay), and allow_unverified (risk warning). However, it does not explain other parameters like token_to_short, collateral_token, collateral_amount, borrow_amount, wallet_address, market, protocol, slippage_bps, etc., which are critical for execution. The lack of coverage for these essential parameters is a gap.
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 action ('Open a lending-based short') with a clear resource (lending-based short) and explicitly describes the mechanism (deposit collateral -> borrow token -> sell). It distinguishes itself from sibling tools like short_close, short_status, and perp_open_short by focusing on the lending-based open action.
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 explicitly states when to use this tool (to open a lending-based short) and provides important constraints: authenticity verification, geo-gating with jurisdiction requirements, and idempotency for retries. It implicitly differentiates from perp_open_short by specifying 'lending-based' and mentions alternatives like declare_jurisdiction for jurisdiction setting. While it doesn't list all alternatives, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_statusARead-onlyIdempotentInspect
List open shorts for a wallet with entry price + health factor.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, non-destructive. Description adds return fields but no other behavioral traits like pagination or rate limits. Adequate but not enhanced.
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?
Single sentence front-loading action and resource. No filler words. Highly efficient.
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?
Output schema exists, so return structure is covered. Minor gaps: no mention of pagination, ordering, or limits for list operation. Still functional and sufficient.
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 coverage, description should explain both parameters. It implicitly explains wallet_address but ignores caller_id. Adds value but incomplete.
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 verb 'List', resource 'open shorts', scope 'for a wallet', and specific output fields 'entry price + health factor'. Differentiates from siblings like short_open, short_close, and perp_positions.
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 explicit when-to-use or when-not-to-use guidance. The context implies usage for viewing open shorts, but lacks alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sidecar_healthARead-onlyIdempotentInspect
Live reachability probe against the deployed execution sidecar.
Thin wrapper around sidecar_service.is_configured/healthcheck -- THE tool that replaces a tester's local
curl $SIDECAR_URL/health (docs/LANE2_DEVNET_VERIFY_RUNBOOK.md Gate C):
that curl only proves the TESTER's own shell can reach a sidecar, never
whether the DEPLOYED mcp.crank.ing server can -- the exact gap that let
the checklist read fully green on 13 Aug 2026 while
poll_agent_wallet_enable was still failing with "managed signing
unavailable (sidecar unreachable)". This tool runs the probe
from the server's own network path instead.
Unconfigured (SIDECAR_URL unset) raises a structured CONFIG_ERROR with
NO network attempt -- feature-detected first via is_configured, the
same presence-only check go_live_status.posture.sidecar.configured
reads (crank_mcp/services/go_live.py); the two must never disagree.
Configured but unreachable returns an OK envelope with
reachable: False -- distinct from "not configured" -- so a caller (or
the runbook's Gate C) can tell "we never tried" apart from "we tried and
it's down".
FREE read, never gated (never in x402 PAID_TOOLS): booleans/counts/hosts
only, no secret ever leaves this tool (mirrors go_live.posture's
presence-only pattern -- never config.SIDECAR_AUTH_TOKEN itself).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by detailing operational behavior: it runs from the server's network path, returns only booleans/counts/hosts, never leaks secrets, and distinguishes 'not configured' from 'unreachable'. It also references the go_live.posture pattern, making the tool's behavior fully transparent.
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 overly verbose and repetitive. Key points (the contrast with local curl, the error states, the no-secret guarantee) are reiterated multiple times in slightly different wording. A more concise treatment would convey the same information without redundancy, making it harder to parse quickly.
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?
Despite the verbosity, the description provides rich context: it explains the tool's purpose, the distinction between configurations, the security aspect, and the expected output type. With an output schema present, the description covers the essential behavioral context without needing to detail return values.
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, caller_id, is not mentioned or explained in the description. With 0% schema description coverage, the description provides no information about its purpose or format, leaving the agent to guess. This is a significant gap for a parameter that, while optional, should be documented.
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: 'Live reachability probe against the deployed execution sidecar.' It distinguishes itself from a local curl command, explaining that it tests the server's network path rather than the tester's shell. This makes the purpose unmistakable and differentiates it from related 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 explicitly explains when to use this tool over the alternative: 'THE tool that replaces a tester's local curl $SIDECAR_URL/health' and elaborates why the local curl is insufficient. It also describes the error behavior (CONFIG_ERROR when unconfigured, unreachable when configured but not reachable), providing clear guidance on when it applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sr_backtestARead-onlyIdempotentInspect
Backtest a strategy with an S/R config block (read-only simulation).
Runs the existing backtest engine with strategy_type (default "support_resistance": bounce-long off detected support, exit on a support break or resistance-fail; on spot a SHORT signal is exit-to-flat) and merges the validated sr_config into params["sr"]. asset is a token mint; timeframe one of 1m/5m/15m/1h/4h/1d; start_date/end_date ISO-8601. Returns the standard performance metrics plus persisted SUPPORT_RESISTANCE signals carrying zone metadata. Read-only simulation -- no fee, no on-chain action, not financial advice (DYOR).
Workflow: SIMULATE step -- validate an S/R setup on history before risking capital; feeds get_risk_assessment -> sr_configure_strategy. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| params | No | ||
| fee_bps | No | ||
| end_date | Yes | ||
| caller_id | No | ||
| sr_config | No | ||
| timeframe | Yes | ||
| start_date | Yes | ||
| slippage_bps | No | ||
| strategy_type | No | support_resistance | |
| slippage_model | No | fixed | |
| wallet_address | No | ||
| initial_capital | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds context: 'no fee, no on-chain action', and describes return values including standard performance metrics and SUPPORT_RESISTANCE signals. No contradictions 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?
The description is well-structured: a concise first sentence states the purpose, followed by parameter details, return info, and workflow. Every sentence adds value, and it is front-loaded. No unnecessary 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?
Considering the tool's complexity (13 parameters, 4 required), rich annotations, and existence of an output schema, the description is comprehensive. It explains the workflow, differentiates from siblings, and describes return values. It meets the needs for selecting and invoking the tool 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?
Schema description coverage is 0%, so the description must compensate. It explains required parameters: 'asset is a token mint', 'timeframe one of 1m/5m/15m/1h/4h/1d', and 'start_date/end_date ISO-8601'. It also mentions merging sr_config into params['sr']. This adds significant meaning beyond the schema for key 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 clearly states 'Backtest a strategy with an S/R config block (read-only simulation)', specifying the verb (backtest), resource (strategy with S/R config), and scope. It distinguishes from sibling 'backtest_strategy' by focusing on support/resistance 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 description explains the workflow as a 'SIMULATE step' to validate an S/R setup before risking capital, and mentions it feeds into other tools. It states 'Read-only simulation' and 'not financial advice'. However, it does not explicitly exclude cases when not to use this tool over other backtesting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sr_configure_strategyBRead-onlyIdempotentInspect
Attach an S/R config block to YOUR OWN strategy (ownership-checked).
Persists an sr param block (SRConfig knobs: sensitivity, sources,
lookback, swing_window, zone_width_bps, merge_tolerance_bps, min_touches,
min_strength, max_zones_per_side, manual_levels, liquidity_weight_k) onto
the caller's own strategy params. The strategy must belong to
wallet_address -- configuring someone else's strategy is refused.
Strategies without an sr block behave exactly as before (back-compat).
User/agent-owned configuration only: you own and control the strategy; the
platform never exercises discretion (DYOR). No key handling, no fee.
Workflow: DECIDE step -- after sr_detect_levels + sr_backtest confirm the level picture, store the tuned config on the strategy. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| sr_config | Yes | ||
| strategy_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contradicts annotations: annotations set readOnlyHint=true (implying no state modification), but the description states 'Persists an sr param block' which is a write operation. This is a severe inconsistency. While the description adds some behavioral context (ownership check, back-compat), the contradiction dominates.
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 moderately concise at about 150 words, but the list of sr_config knobs could be offloaded to the schema if the schema had descriptions. The structure is front-loaded with the main action, and the workflow reference is useful, but there is some redundancy in explaining ownership.
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's complexity (4 params, nested objects, output schema), the description lacks details on merge behavior (does it replace or augment existing config?) and error handling (what happens if not owner?). The annotation contradiction further undermines completeness. The workflow reference helps, but gaps remain.
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. It lists the internal knobs of the sr_config object (sensitivity, sources, lookback, etc.), adding meaning beyond the schema's additionalProperties. However, it does not describe strategy_id or wallet_address in detail, which are inferred from the ownership constraint.
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: 'Attach an S/R config block to YOUR OWN strategy (ownership-checked).' It specifies the verb (attach/configuring), the resource (strategy with S/R parameters), and differentiates from siblings by mentioning the workflow involving sr_detect_levels and sr_backtest.
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 usage context: 'Workflow: DECIDE step -- after sr_detect_levels + sr_backtest confirm the level picture, store the tuned config on the strategy.' It implies when to use and points to get_trading_workflow for more details, but does not explicitly state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sr_detect_levelsARead-onlyIdempotentInspect
Multi-timeframe support/resistance zones + liquidity bands (read-only).
Detects S/R zones per timeframe from recent OHLCV (swing highs/lows, floor pivots, Fibonacci retracement, volume-profile clusters, optional manual levels), merges them across timeframes with a confluence multiplier, and weights zone strength by overlapping candle-volume liquidity-band depth. asset is a token mint; timeframes default ["1h","4h","1d"]; lookback candles per timeframe (capped at 500); sources subset of swing / pivot / fibonacci / volume_profile / price_impact / manual; sensitivity 0-1 (higher = more zones); zone_width_bps sets the band half-width; manual_levels adds caller-supplied override prices. Returns zones (supports / resistances / pivots with price, band, strength, touches, sources, timeframes) plus liquidity_bands. Computed reference levels only -- not financial advice, not a trade instruction (DYOR). No wallet, no fee, no on-chain action.
Workflow: INTELLIGENCE step -- the level picture behind sr_backtest + sr_configure_strategy; pair with get_indicators + detect_regime. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| sources | No | ||
| lookback | No | ||
| caller_id | No | ||
| timeframes | No | ||
| sensitivity | No | ||
| manual_levels | No | ||
| zone_width_bps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive. The description adds significant behavioral details: computed reference levels only, no wallet/fee/on-chain action, merging across timeframes, and weighting by liquidity. No contradictions.
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 front-loaded with the main purpose and then details parameters and workflow. It is slightly verbose but each sentence adds value. Structure is logical.
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 presence of output schema and annotations, the description covers purpose, parameters, and workflow adequately. It mentions output fields (zones, liquidity_bands) without duplicating the schema. Lacks explicit details on output structure but schema suffices.
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?
Despite 0% schema description coverage, the text explains each parameter's role and defaults (asset as token mint, lookback cap, sources subset, sensitivity range, etc.). It does not list all possible source values exhaustively but provides sufficient context for usage.
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 detects support/resistance zones and liquidity bands, is read-only, and distinguishes from siblings by mentioning pairing with sr_backtest and sr_configure_strategy. It also provides workflow context as an INTELLIGENCE step.
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 workflow guidance, pairing with related tools, and includes a caveat (not financial advice). However, it lacks explicit when-not-to-use instructions or alternatives beyond sibling references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_arb_createADestructiveInspect
Create an arb strategy -- cross-venue price-discrepancy convergence (APPROXIMATE).
Reads a live cross-venue spread each tick (task-sourced from the Jupiter
quote corpus vs on-chain price) or falls back to a transparent PROXY
(deviation below a short EMA) when unavailable. Enters when the spread
clears entry_spread_pct and flat; exits when it reverts to
exit_spread_pct. The simultaneous two-venue fill is collapsed to one
leg (flagged approximate). Market-neutral: no direction params exposed
(regime is read directly, not adapted).
risk: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| ema_period | No | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| usd_per_trade | Yes | ||
| wallet_address | Yes | ||
| exit_spread_pct | No | ||
| entry_spread_pct | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the approximate nature, the proxy fallback, the collapsed two-leg fill, and the market-neutral design. It goes well beyond the annotations by detailing the trading logic and the fact that direction parameters are not exposed. 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?
The description is a compact paragraph with each sentence adding meaningful detail. It uses backticks for parameters and ends with a helpful cross-reference. Slightly dense but not 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?
The description covers the strategy logic, fallback mechanism, entry/exit conditions, and market-neutrality, which is sufficient for a complex tool. With an output schema present, return values need not be explained. It lacks explicit discussion of setup requirements like wallet balance, but the overall context is well-covered.
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%, but the description explains the meaning of entry_spread_pct, exit_spread_pct, and the EMA period, and references strategy_dca_create for the risk parameter. However, it does not explain other parameters like wallet_address, target_token, usd_per_trade, or slippage_bps, which are required or affect execution.
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 explicitly states 'Create an arb strategy' and further defines it as 'cross-venue price-discrepancy convergence (APPROXIMATE)'. This clearly distinguishes it from other strategy creation tools like strategy_momentum_create or strategy_dca_create.
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 clearly indicates the tool is for arbitrage strategies based on cross-venue price discrepancies, with explicit entry/exit conditions and a fallback proxy. It does not name alternative tools for when not to use it, but the context strongly implies its use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_basis_trade_createADestructiveInspect
Create a basis-trade strategy -- funding-harvest perp SHORT leg (APPROXIMATE).
Routes the perp leg through the multi-venue VENUE ADAPTER (hard rule 2). A
live delta-neutral basis trade is long spot + short perp harvesting
funding; this executor opens/manages only the perp SHORT leg (the spot
long that makes the book delta-neutral is held separately by the caller)
-- flagged approximate + funding_not_modeled (funding PnL itself is
not simulated live). While funding is favourable (> min_funding) and
flat, opens the short sized usd_per_trade at leverage; closes when
funding decays to <= min_funding. Only an asset with a mapped perp
market (currently SOL) can open. A Tier B (custodied) venue needs
acknowledge_tier_b=true.
risk: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| venue | No | ||
| leverage | No | ||
| min_funding | No | ||
| slippage_bps | No | ||
| target_token | Yes | ||
| usd_per_trade | Yes | ||
| wallet_address | Yes | ||
| funding_lookback | No | ||
| interval_seconds | No | ||
| acknowledge_tier_b | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, readOnlyHint=false), the description discloses that funding PnL is not modeled, flags the strategy as approximate, and explains the open/close behavior and routing through the venue adapter. This is substantive additional context about how the tool behaves.
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 multi-paragraph but well-structured, with the core purpose front-loaded and subsequent details organized around execution logic, constraints, and flags. Every sentence adds relevant information without fluff, though it is more verbose than strictly necessary.
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's complexity (11 parameters, strategy creation, conditional execution), the description covers the essential behavior, constraints, and important parameters. An output schema exists, so return values are not needed. Missing explanations for a few parameters (slippage_bps, funding_lookback, interval_seconds) are minor given the overall 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 input schema has zero description coverage, so the description carries the burden. It explains key parameters: min_funding, usd_per_trade, leverage, acknowledge_tier_b, and references risk to another strategy. While not all 11 parameters are individually described, the most consequential ones are covered, and the rest (e.g., wallet_address, venue) are self-explanatory in context.
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 creates a basis-trade strategy, specifically the perp SHORT leg with 'APPROXIMATE' flag. It distinguishes itself from sibling strategy tools by detailing the funding-harvest mechanism and the specific leg it manages.
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 explicit conditions for use: only assets with a mapped perp market (currently SOL), and requires acknowledge_tier_b=true for Tier B venues. It also explains the trading logic (open/close conditions), giving clear context for when to invoke this tool, though it does not explicitly name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_cancelAInspect
Stop a strategy (sets status=stopped; it will not be dispatched again).
| Name | Required | Description | Default |
|---|---|---|---|
| strategy_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation (readOnlyHint=false) but the description adds that the strategy is no longer dispatched, clarifying the behavioral effect. However, it does not mention reversibility or permissions, though destructiveHint=false suggests non-destructive state change.
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 sentence of 16 words, front-loaded with the action verb 'Stop'. Every word is necessary and no redundant information is present.
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 cancellation tool with an output schema present (though not shown), the description covers the primary effect and purpose. It lacks guidance on usage vs. pause, but is otherwise sufficient for an agent to invoke the tool 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?
The input schema has two required parameters (strategy_id, wallet_address) with no descriptions (0% coverage). The description does not explain their purpose or why wallet_address is needed, leaving the agent without added semantic meaning beyond 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 clearly states the tool stops a strategy by setting its status to stopped and preventing further dispatch. It uses a specific verb ('Stop') and resource ('strategy'), differentiating it from sibling tools like strategy_pause which likely implies temporariness.
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 this is a permanent stop ('will not be dispatched again'), contrasting with strategy_pause which may be temporary. However, it does not explicitly state when to use this over alternatives, leaving room for inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_composite_createADestructiveInspect
Create a composite strategy from a validated definition.
Same non-custodial create path as the other 16 strategy types: the wallet
holds its own keys; a wallet without a Turnkey signer receives an unsigned
transaction per tick for the owner to sign. mode defaults to LIVE
(recorded on the config; a paper mode annotation is informational until the
managed-signing epic lands). Recommended: run compose_strategy +
backtest_strategy on the definition FIRST -- historical results are not
predictive; DYOR.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | live | |
| risk | No | ||
| definition | Yes | ||
| wallet_address | Yes | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits beyond annotations: the non-custodial path, wallet key custody, unsigned transaction per tick for wallets without a Turnkey signer, and the live/paper mode nuance. This adds significant context beyond the annotations (readOnlyHint: false, destructiveHint: true) and includes a DYOR warning.
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 compact paragraph with a clear front-loaded purpose, followed by necessary behavioral and usage context. Each sentence earns its place, though it could be slightly more streamlined by separating the DYOR warning into a distinct note.
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's complexity (5 parameters, nested objects, output schema) and strong annotations, the description covers the core purpose, recommended workflow, and critical mode behavior. It does not fully explain risk or interval_seconds, but the output schema and sibling tools help fill structural gaps.
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. It explains mode (defaults to LIVE, paper mode is informational) and definition (validated definition), and indirectly wallet_address. However, it does not add meaning for risk or interval_seconds, leaving gaps for two optional 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 opening sentence 'Create a composite strategy from a validated definition' uses a specific verb and resource, clearly distinguishing this tool from other strategy creation tools (e.g., strategy_momentum_create) by focusing on composite strategies. The reference to 'other 16 strategy types' further contextualizes its place within the family.
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?
Explicitly recommends running compose_strategy and backtest_strategy on the definition first, giving clear when-to-use guidance. Also explains mode defaulting behavior and the caveat about paper mode, helping agents decide when to invoke this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_copy_wallet_createADestructiveInspect
Create a copy-wallet strategy -- mirrors a tracked wallet's entries/exits.
tracked_wallet is the Solana address to mirror (its confirmed on-chain
buy/sell actions are sourced each tick); usd_per_buy is the default
mirror size (scaled by size_multiplier) applied when the tracked wallet
buys. APPROXIMATE: no full per-fill replication (every execution is flagged
approximate).
risk / direction params: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| allow_short | No | ||
| usd_per_buy | Yes | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| direction_mode | No | ||
| tracked_wallet | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| size_multiplier | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-idempotent, potentially destructive operation (readOnlyHint=false, destructiveHint=true). The description adds meaningful behavioral context: it explicitly flags the approximation caveat ('APPROXIMATE: no full per-fill replication (every execution is flagged approximate)') and explains how the wallet's actions are 'sourced each tick.' This goes beyond what annotations provide, though it could also mention side effects or prerequisites. 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?
The description is compact and well-structured: one sentence for purpose, one paragraph for key parameters and the approximation caveat, one line for cross-reference. Every sentence contributes substantive information without redundancy. It is front-loaded with the primary action, making it easy to scan. This is an example of efficient, purpose-driven writing.
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's complexity (12 parameters, 0% schema coverage), the description covers the central mechanism (mirroring a wallet, approximation) but leaves many parameter semantics to inference or a cross-reference. The presence of an output schema means return values need not be described, but parameter completeness is lacking. It is adequate for a quick understanding but would benefit from expanding on additional parameters or clarifying the reference tool's documentation.
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 is responsible for explaining parameters. It does explain tracked_wallet and usd_per_buy, including scaling by size_multiplier, and it points to strategy_dca_create for risk/direction params. However, the remaining eight parameters (e.g., regime_override, interval_seconds, allow_short) are not described, leaving a significant gap. The cross-reference helps but does not fully compensate for the missing parameter documentation.
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 specific verb+resource: 'Create a copy-wallet strategy -- mirrors a tracked wallet's entries/exits.' This clearly differentiates it from sibling strategy creation tools like strategy_dca_create or strategy_snipe_create, which target different strategy types. The name itself is also descriptive, but the description adds the resource ('copy-wallet strategy') and the precise behavior ('mirrors entries/exits').
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 implicitly defines when to use the tool: when you want to mirror a wallet's trades. It also provides a cross-reference to strategy_dca_create for risk/direction parameters, which gives a clue about related tools. However, it does not explicitly state alternatives or cases where this tool should NOT be used. Since the purpose is specific and the sibling list is broad, the implied usage is clear but not exhaustively contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_dca_createADestructiveInspect
Create a dollar-cost-average strategy buying usd_per_buy of target each interval.
risk (optional) overrides the safe-default risk limits:
max_position_pct / max_portfolio_exposure_pct / max_single_loss_pct
/ max_drawdown_pct / max_daily_loss_pct (percent; <=0 disables a guard).
Direction (optional, all deterministic signals -- DYOR): direction_mode
(auto | long_only | short_only | manual; default auto = follow the market
regime, reducing exposure in a bear instead of accumulating), allow_short
(enable real shorts via the configured perps venue), regime_override (force
bull | bear | range | volatile instead of trusting detection).
Workflow: EXECUTE step -- stand up a recurring strategy after backtest_strategy validates it and get_risk_assessment sets the guards; track via strategy_status. An agent wallet without a Turnkey signer = paper-trade (unsigned tx per tick). See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| smart | No | ||
| allow_short | No | ||
| usd_per_buy | Yes | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with annotations marking this as non-read-only and destructive, the description adds substantial behavioral context: risk overrides and how <=0 disables guards, direction_mode's default regime-following behavior, allow_short and regime_override semantics, and the paper-trade behavior for unsigned wallets. This goes well beyond the annotation hints and gives the agent a genuinely safer mental model of the tool's effects.
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 information-dense with no filler. It front-loads the core purpose, uses backticked parameter names and clear blocks for risk, direction, and workflow, and every sentence adds useful guidance. It is long enough for the tool's complexity but still well-organized.
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 core workflow, prerequisites, risk behavior, direction options, and paper-trading caveat. The output schema exists, so return-value description is not required. Still, the complete omission of what 'smart' does and the lack of detail on slippage_bps and interval_seconds leave a small but real gap for an agent deciding how to call this 11-parameter tool.
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 carries a heavy burden and compensates well: it explains usd_per_buy, risk guard fields, direction_mode values and default, allow_short, and regime_override. However, it leaves some parameters implicit or unexplained, most notably smart, slippage_bps, source_token (beyond the default), interval_seconds, and wallet_address semantics.
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 specific verb and resource: "Create a dollar-cost-average strategy buying usd_per_buy of target each interval." This clearly defines the tool's function and distinguishes it from the many other strategy_*_create siblings, especially strategy_equity_dca_create and strategy_momentum_create.
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 explicit workflow guidance: use it as the EXECUTE step after backtest_strategy validates and get_risk_assessment sets guards, and track via strategy_status. It also mentions the paper-trading fallback for wallets without a Turnkey signer. However, it does not explicitly say when not to use it or name alternative tools for other strategy types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_equity_dca_createADestructiveInspect
Create an equity dollar-cost-average strategy (tokenized equities / xStocks).
Shares the DCA executor -- identical mechanics/config to
strategy_dca_create -- tagged equity_dca because target_token is
expected to be a tokenized-equity mint. SEC posture: DCA is a
MECHANICAL, user-configured strategy (not discretionary), so it stays
autonomous even on a security target -- the per-execution confirmation gate
only applies to the discretionary types (momentum / sentiment). Equity
classification still drives geo-gating + disclaimers at execution; call
asset_classification / get_disclaimers first.
risk / direction params: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| smart | No | ||
| allow_short | No | ||
| usd_per_buy | Yes | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds substantial behavioral context beyond that: it clarifies that DCA is mechanical and autonomous (no per-execution confirmation gate) unlike discretionary types, and that equity classification triggers geo-gating and disclaimers. This is valuable and not directly captured in the annotations. No contradiction exists; the description aligns with the destructive/read-write hints.
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 moderately long but well-structured: it opens with the core action, then explains the shared mechanics, SEC posture, and necessary preconditions, ending with a pointer to the sibling tool. It is front-loaded with the primary purpose and avoids unnecessary fluff. While it could be trimmed slightly, the information density is high and every sentence serves a purpose.
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 tool with 11 parameters and an output schema, the description provides strong contextual guidance: it clarifies when to use it (equity target), prerequisites (call asset_classification/get_disclaimers), the autonomy behavior, and where to find parameter details. It doesn't explain the return value, but the presence of an output schema covers that. Delegating the detailed parameter semantics to strategy_dca_create is acceptable given the explicit 'identical mechanics' statement. Overall, it is complete for an agent to correctly invoke this tool.
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?
Given schema coverage is 0%, the description compensates by directing the agent to strategy_dca_create for risk/direction semantics via the phrase 'risk / direction params: see strategy_dca_create' and by stating all config is 'identical mechanics/config'. It also adds explicit meaning for target_token as a 'tokenized-equity mint'. This effectively delegates parameter explanation to a closely related tool while adding key semantic context, though it doesn't describe each parameter individually in this description.
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 and resource: 'Create an equity dollar-cost-average strategy' with the added scope 'tokenized equities / xStocks'. It differentiates itself from the sibling strategy_dca_create by explicitly noting it 'Shares the DCA executor -- identical mechanics/config' but is 'tagged equity_dca' because the target_token is expected to be a tokenized-equity mint. This makes the tool's purpose unambiguous and distinct from other strategy creation 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 provides usage context by referencing strategy_dca_create for risk/direction parameters and stating 'identical mechanics/config'. It also advises calling asset_classification / get_disclaimers first, which are clear preconditions. It distinguishes this tool from discretionary strategies by explaining the SEC posture, implying it should be used for mechanical DCA on security targets. However, it doesn't explicitly enumerate all alternative tools or exclusions beyond strategy_dca_create, but the differentiation is sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_hedge_createADestructiveInspect
Create a hedge strategy -- an exit trigger that unwinds a held position.
Shares the stop-loss executor -- identical config/mechanics to
strategy_stoploss_create -- framed as an active risk-offset trigger: set
stop_loss_pct / trailing to shed exposure on an adverse move, or
take_profit_pct to lock in a favourable one. At least one of
stop_loss_pct / take_profit_pct / trailing must be set.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| trailing | No | ||
| allow_short | No | ||
| entry_price | No | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| stop_loss_pct | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| position_amount | Yes | ||
| regime_override | No | ||
| take_profit_pct | No | ||
| interval_seconds | No | ||
| trailing_distance_pct | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true. The description adds behavioral context beyond that: it is an 'exit trigger that unwinds a held position,' indicating position-closing behavior. It also discloses a critical constraint ('At least one of stop_loss_pct / take_profit_pct / trailing must be set'), which is not available in the schema. A minor gap is that it does not describe execution details like on-chain transactions or gas costs.
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 compact and well-structured, with a leading definition, a single explanatory paragraph, and no redundant filler. It is front-loaded and every sentence contributes either to purpose, usage, or 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?
An output schema exists, so return values are covered. The description gives a clear purpose, key parameter guidance, and a pointer to the sibling for full configuration. However, with 15 parameters and zero schema descriptions, the description remains incomplete for a user who does not already know strategy_stoploss_create. It is adequate but not fully self-contained.
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 provides meaning for only three parameters (stop_loss_pct, trailing, take_profit_pct) and references strategy_stoploss_create for the rest, but does not explain many other parameters such as risk, allow_short, direction_mode, or regime_override. The reference to a sibling is helpful but does not make the description self-contained for 15 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 clearly states the tool's function: 'Create a hedge strategy -- an exit trigger that unwinds a held position.' This is a specific verb+resource with a clear concept. It also distinguishes itself from the closely related sibling by explicitly referencing strategy_stoploss_create and explaining the hedge framing as an 'active risk-offset trigger.'
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?
Explicit guidance is provided on when to use this tool versus alternatives: 'Shares the stop-loss executor -- identical config/mechanics to strategy_stoploss_create' names the sibling, and the description explains parameter usage for different market scenarios ('set stop_loss_pct / trailing to shed exposure on an adverse move, or take_profit_pct to lock in a favourable one'). This gives clear context for choosing and configuring the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_listARead-onlyIdempotentInspect
List a wallet's strategies (newest first, capped).
detail: "concise" (default) trims each row to
strategy_id/strategy_type/status -- the IDs needed to chain into
strategy_status/strategy_modify/strategy_cancel/strategy_pause/
strategy_resume; "full" also includes schedule/next_execution_at, as
before. An unrecognised value falls back to concise (never errors).
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | concise | |
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations: rows are capped, detail mode changes the fields returned, and an unrecognized detail value falls back to concise without error. Given the annotations already cover read-only/idempotent safety, this provides meaningful additional transparency.
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 appropriately concise and front-loaded with the main purpose. The detail parameter explanation is compact and useful. The phrase 'as before' is slightly out-of-context but does not unduly hurt clarity.
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 output schema exists, the annotations cover safety, and there are only two parameters, the description covers the important behavioral aspects: ordering, cap, detail modes, and fallback. Minor gaps remain, such as what 'capped' limits and any wallet address formatting requirements, but these are not critical for basic correct invocation.
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 schema has 0% description coverage, so the description must compensate. It does so well for the 'detail' parameter by explaining both values, default behavior, and fallback semantics. 'wallet_address' is left to its name and context, which is mostly sufficient but not explicitly detailed.
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 clear purpose: list a wallet's strategies, with ordering (newest first) and a cap. This is specific enough to be understood, but it does not explicitly contrast with sibling tools like discover_strategies or get_strategy_suggestions, so it misses 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?
The description implies when to use it, especially through the concise mode explanation that provides strategy IDs needed to chain into strategy_status/strategy_modify/strategy_cancel/strategy_pause/strategy_resume. However, it does not explicitly describe when not to use it or how it compares to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_market_make_createADestructiveInspect
Create a market-make strategy -- two-sided spread capture (APPROXIMATE).
No live order book -- SYNTHESISES a spread from realised volatility around a rolling mid: a "filled bid" (price a half-spread below mid) buys, a "filled ask" (above mid) sells (up to held inventory). Market-neutral: PAUSES in a trending (bull/bear) regime instead of adapting direction (a maker gets run over by a directional move) -- read directly inside the executor, so no direction params are exposed here.
risk: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| max_levels | No | ||
| mid_period | No | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| usd_per_quote | Yes | ||
| wallet_address | Yes | ||
| base_spread_pct | No | ||
| spread_lookback | No | ||
| vol_spread_mult | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral traits: no live order book, synthetic spread from realised volatility, filled bid/ask mechanics, market-neutral pause in trending regimes, and hidden direction parameters. It honestly labels the strategy as 'APPROXIMATE' and explains the rationale for pausing. This goes far beyond the annotations, which only provide generic hints. There is 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?
The description is well-structured and information-dense without unnecessary fluff. It uses capitalization for emphasis and paragraph breaks for readability. Every sentence adds value, though it is slightly longer than average.
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 core strategy logic and behavioral constraints well, but omits parameter-level explanations and defers the risk parameter to another tool. With 12 parameters and no schema description coverage, the documentation is incomplete. The presence of an output schema helps but does not fully compensate.
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 description coverage at 0%, the description was expected to explain parameters. It only mentions 'risk' by referencing another tool and vaguely describes spread mechanics. It does not name or explain the 12 parameters like base_spread_pct, mid_period, or vol_spread_mult. The pointer to strategy_dca_create is insufficient.
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 'Create a market-make strategy -- two-sided spread capture (APPROXIMATE)' which is a specific verb+resource. It differentiates from sibling strategy creation tools by explaining the approximate, non-live-order-book nature and market-neutral pause behavior.
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 strong guidance on when to use the tool: for creating a market-neutral spread-capturing strategy that avoids directional exposure. It explicitly states 'instead of adapting direction' and explains the pause-in-trend logic, which implies when not to use it. However, it does not explicitly name alternative tools beyond referencing strategy_dca_create for the risk parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_modifyADestructiveInspect
Edit a running strategy's parameters IN PLACE -- no cancel + recreate.
React to a fresh signal by retuning the strategy you already own: the execution history, cost-basis ledger and position state all survive, and there is no window where the strategy is gone. The live executor picks the new config up on its NEXT tick; a tick already in flight finishes against the config it loaded (it writes only runtime state, never config, so the two can never clobber each other).
Scoped to the caller's own wallet (hard rule 1 -- non-custodial: this edits a row the owner already controls; nothing here holds keys, signs or moves funds).
Args (all optional -- supply at least one):
config_updates: strategy-config keys to set, merged over the existing
config (e.g. {"usd_per_buy": 25, "stop_loss_pct": 0.08}).
remove_keys: config keys to drop back to the executor's default.
risk: retune the risk limits -- max_position_pct /
max_portfolio_exposure_pct / max_single_loss_pct /
max_drawdown_pct / max_daily_loss_pct (percent; <=0 disables a
single guard).
direction_mode / allow_short / regime_override: the direction
controls from the create tools (deterministic signals -- DYOR).
target_allocation: new mint->weight basket (rebalance / vault /
yield_farm).
interval_seconds: new tick interval, used from the next tick on.
reason: free text recorded on the strategy's audit log.
REFUSED (returns immutable_config_key): target_token /
source_token / tracked_wallet / venue / composite
definition. These define WHAT the strategy trades -- editing them in
place would desync the executor's position bookkeeping or strand an open
perp leg on the venue it was opened against. Cancel and create a new
strategy for those. A STOPPED strategy is final and cannot be modified;
a paused one can (the edit does not resume it -- use strategy_resume).
The merged config is dry-run through the strategy's executor before it is
persisted, so an invalid edit is rejected (invalid_config) rather than
latching the live strategy into error on its next tick.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| reason | No | ||
| allow_short | No | ||
| remove_keys | No | ||
| strategy_id | Yes | ||
| config_updates | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| interval_seconds | No | ||
| target_allocation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive=true and readOnly=false, but the description adds crucial behavioral context beyond annotations: state survives, executor picks config on next tick, in-flight ticks finish with old config, scoped to caller's wallet, and dry-run validation prevents invalid_config latching. 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?
The description is long but well-structured with purpose, args, refused keys, and edge cases. It front-loads the value proposition and uses clear sections. Slightly verbose, but every sentence earns its place given the tool's complexity.
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?
Covers all operational constraints: immutable keys that must be refused, STOPPED vs paused behavior, dry-run rejection, tick semantics, and audit logging. Since an output schema exists, return values need no explanation. The description is fully sufficient for correct selection and invocation.
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 full burden. It explains every parameter with semantics and examples: config_updates merges over existing config, remove_keys drops to default, risk limits have special behavior (<=0 disables), target_allocation applies to basket types, interval_seconds takes effect next tick. This far exceeds the bare 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 opens with a precise verb-resource statement: 'Edit a running strategy's parameters IN PLACE -- no cancel + recreate.' It clearly distinguishes this tool from create tools and from strategy_cancel/recreate by emphasizing in-place modification that preserves execution history and position state.
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 explicitly states when to use the tool: to retune a strategy on a fresh signal while keeping state. It names alternatives: 'Cancel and create a new strategy' for immutable keys, and 'use strategy_resume' for paused strategies. It also says a STOPPED strategy is final and cannot be modified, providing clear exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_momentum_createADestructiveInspect
Create a momentum strategy -- fast/slow SMA crossover entry/exit.
Buys on a bullish cross (fast SMA > slow SMA), sells on a bearish cross.
DISCRETIONARY (SEC framework): the model interprets a signal
and converts it to a trade, so targeting a tokenized SECURITY forces
per-execution user confirmation before the scheduled dispatcher will run a
tick (strategies.tasks.execute_strategy requires user_confirmed=True;
crypto targets stay fully autonomous). Call asset_classification first.
risk / direction params: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| fast | No | ||
| risk | No | ||
| slow | No | ||
| allow_short | No | ||
| usd_per_buy | Yes | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: exact buy/sell signal logic, the discretionary SEC execution path, the requirement for user_confirmed=True for tokenized securities, autonomous crypto behavior, and a precondition to call asset_classification. This is high-value operational context that helps the agent understand execution implications.
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 well-structured and front-loaded: purpose, mechanics, then critical operational caveats, then a pointer to related parameter docs. It has no filler, though the internal task reference and SEC jargon make it somewhat dense.
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 core strategy behavior and the most important operational caveat (security vs crypto confirmation), and an output schema exists so return values need not be described. However, it relies on another tool's documentation for risk/direction parameters and leaves several other parameters undocumented, so an agent would still need to infer or search for complete guidance.
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 the description only explains fast/slow SMA semantics and defers risk/direction parameters to another tool's documentation. Most parameters (usd_per_buy, target_token, wallet_address, slippage_bps, interval_seconds, regime_override, allow_short, direction_mode) remain unexplained, leaving a significant semantic gap for a 12-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 identifies the tool as creating a momentum strategy and defines the exact mechanics: fast/slow SMA crossover entry/exit with buys on bullish crosses and sells on bearish crosses. It is specific enough to distinguish it from other strategy creation siblings, though it does not explicitly contrast with them.
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 usage context: call asset_classification first, and explains the SEC discretionary framework where security targets require per-execution user confirmation while crypto targets remain autonomous. It also points to strategy_dca_create for risk/direction parameters, but it does not explicitly state when not to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_pauseAIdempotentInspect
Manually pause a strategy (status=paused_manual; stops dispatch).
| Name | Required | Description | Default |
|---|---|---|---|
| strategy_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false. The description adds that the tool sets status to paused_manual and stops dispatch, providing some behavioral context. However, it omits details like required permissions or side effects on pending orders.
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 sentence with a parenthetical clarification. Every word adds value, and it is front-loaded with the core action. No redundant 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 simple, idempotent mutation with an output schema, the description covers the state change adequately. It could mention reversibility via strategy_resume, but the tool is otherwise 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?
Schema description coverage is 0%, and the description does not explain the two required parameters (strategy_id and wallet_address). The names provide minimal hint, but no format or behavior guidance is given. The description should compensate for the missing schema descriptions.
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 'Manually pause a strategy' and defines the resulting status and behavior ('status=paused_manual; stops dispatch'). It distinguishes the tool from siblings like strategy_resume and strategy_cancel.
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 manual initiation of pause via 'Manually pause'. While it does not explicitly state when to use vs. alternatives, the sibling context makes it clear. No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_perp_grid_createADestructiveInspect
Create a perp-grid strategy -- a ladder of perp LONGS accumulated on dips.
Routes through the multi-venue perps VENUE ADAPTER (hard rule 2; Jupiter
Perps primary). Around a rolling center price (SMA, or an explicit
center_price), each grid_spacing_pct move below center is one rung;
crossing a deeper rung opens a perp long sized usd_per_level at
leverage. PAUSES new rungs in a trending (bull/bear) regime and closes
the ladder in a bear (stop the bleed); tightens spacing in range, widens
when volatile. Only an asset with a mapped perp market (currently SOL) can
open -- see get_venue_status for routable markets. venue optional
(defaults to the configured primary); a Tier B (custodied) venue needs
acknowledge_tier_b=true after reviewing its custody_disclosure.
risk: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| venue | No | ||
| leverage | No | ||
| grid_levels | No | ||
| center_price | No | ||
| slippage_bps | No | ||
| target_token | Yes | ||
| center_period | No | ||
| range_tighten | No | ||
| usd_per_level | Yes | ||
| volatile_widen | No | ||
| wallet_address | Yes | ||
| grid_spacing_pct | No | ||
| interval_seconds | No | ||
| acknowledge_tier_b | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and open-world behavior, but the description goes further: it discloses that the strategy pauses new rungs in trending regimes, closes the ladder in a bear, tightens/widens spacing based on volatility, and requires acknowledge_tier_b for Tier B venues. This explains the destructive impact beyond 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 about 100 words, front-loaded with the core purpose, and every sentence adds value: mechanics, regime behavior, venue constraints, and risk reference. It is dense yet well-structured, with no 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?
For a complex 15-parameter tool with output schema, the description covers the primary behavior, venue routing, asset restrictions, and risk acknowledgment. It leaves a few parameters unexplained but provides enough context for an agent to use the tool correctly and know where to look for additional details.
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 coverage, the description adds meaning for several key parameters: grid_spacing_pct, center_price, usd_per_level, leverage, venue, acknowledge_tier_b, range_tighten, and volatile_widen. It also refers to strategy_dca_create for the risk parameter. Some parameters like center_period, grid_levels, slippage_bps, and interval_seconds remain unexplained, preventing a perfect score.
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 'Create a perp-grid strategy -- a ladder of perp LONGS accumulated on dips,' which gives a specific verb and resource. It then explains the mechanism (rungs below center price, perp long sizing) making it clearly distinct from sibling strategy tools like DCA or market making.
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 the tool (for accumulating longs on dips) and provides constraints (only assets with a mapped perp market, see get_venue_status). It does not explicitly state when not to use it or directly contrast with alternative strategies, though the mechanism and venue caveats give clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_protect_createADestructiveInspect
Create a downside-protection monitor on a held position.
Shares the stop-loss executor -- identical config/mechanics to
strategy_stoploss_create -- framed as a pure downside guard. At least
one of stop_loss_pct / take_profit_pct / trailing must be set.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| trailing | No | ||
| allow_short | No | ||
| entry_price | No | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| stop_loss_pct | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| position_amount | Yes | ||
| regime_override | No | ||
| take_profit_pct | No | ||
| interval_seconds | No | ||
| trailing_distance_pct | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds context by mentioning it shares the stop-loss executor mechanics, letting the agent infer expected behavior from the sibling. Yet it does not disclose specific side effects, permission requirements, or the nature of the 'monitor' lifecycle, so it only partially supplements 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 three sentences, front-loaded with the core purpose, followed by a useful cross-reference to a sibling tool and a concise constraint. Every sentence earns its place with no redundant or filler content.
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 has 15 parameters and a complex creation operation, but the description only touches on a handful of parameters and does not explain what the monitor does beyond 'downside protection.' The output schema is present, so return values are covered, but the behavioral details and parameter semantics are too incomplete for the tool's complexity.
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 15 parameters and 0% schema description coverage, the description must compensate, but it only mentions three parameters (stop_loss_pct, take_profit_pct, trailing) and a required at-least-one rule. The other 12 parameters remain unexplained, providing minimal semantic value beyond the schema's bare types and defaults.
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 specific verb and resource: 'Create a downside-protection monitor on a held position.' It also distinguishes itself from the sibling strategy_stoploss_create by noting it is 'framed as a pure downside guard,' making the tool's purpose clear and unique.
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 context on when to use this tool by explicitly referencing strategy_stoploss_create as sharing identical mechanics, implying a relationship and differentiation. It also provides a critical usage rule: at least one of stop_loss_pct, take_profit_pct, or trailing must be set. However, it does not explicitly state when not to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_rebalance_createBDestructiveInspect
Create a portfolio-rebalance strategy toward target_allocation (mint->weight).
Direction (optional, deterministic signal): direction_mode /
allow_short / regime_override -- see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| allow_short | No | ||
| slippage_bps | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| interval_seconds | No | ||
| target_allocation | Yes | ||
| drift_threshold_pct | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, so the mutation and non-idempotent nature are already known. The description adds a small behavioral detail by calling the direction inputs a 'deterministic signal,' but it does not disclose side effects, overwrite behavior, or any additional consequences beyond what annotations already imply.
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 short and front-loaded, with the core purpose in the first sentence and optional direction details in the second. It earns its place without fluff, though the 'see strategy_dca_create' reference shifts some explanatory burden to another tool.
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?
With 9 parameters, nested objects, and an output schema, the description is too sparse to be complete. It does not explain required wallet_address, the format and constraints of target_allocation beyond 'mint->weight', or the meaning of drift_threshold_pct, interval_seconds, slippage_bps, and risk. The output schema exists, so return values are covered, but the input semantics are not.
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 compensate. It explains target_allocation as 'mint->weight' and mentions direction_mode, allow_short, and regime_override as direction controls, but it leaves risk, slippage_bps, interval_seconds, drift_threshold_pct, and wallet_address unexplained. The cross-reference to strategy_dca_create may help but is not self-contained.
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 clear verb and resource: 'Create a portfolio-rebalance strategy toward target_allocation (mint->weight).' This distinguishes it from most strategy_*_create siblings by specifying the rebalance behavior. However, it does not explicitly differentiate it from strategy_dca_create beyond a cross-reference for direction semantics.
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 intended use is implied by the first sentence: use this to create a portfolio-rebalance strategy targeting a specific allocation. The reference to strategy_dca_create for direction semantics hints at shared behavior but does not provide explicit when-to-use or when-not-to-use guidance relative to other strategy creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_resumeADestructiveInspect
Re-enable a paused strategy (manual re-enable after a drawdown pause).
The drawdown kill switch latches a strategy to
paused_drawdown and requires this explicit owner action to resume; the
equity high-water mark is reset so it does not immediately re-trip.
| Name | Required | Description | Default |
|---|---|---|---|
| strategy_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important behavioral detail beyond the annotations: the strategy latches to paused_drawdown, the equity high-water mark is reset, and it does not immediately re-trip. This meaningfully clarifies the side effects of resuming, consistent with destructiveHint=true.
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 compact sentences front-load the primary action and then provide essential context. Every sentence earns its place, with no filler or repetition of the schema.
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 output schema exists and annotations are present, the description covers the key state transition, why the action is required, and the high-water mark reset. The main gap is parameter semantics, which keeps it from being fully 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?
Schema description coverage is 0%, so the description must compensate, but it does not explain strategy_id or wallet_address beyond their names. The mention of 'owner action' hints at wallet_address's role but never explicitly maps it to a parameter.
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 verb ('Re-enable') and resource ('a paused strategy'), and narrows the context to manual re-enable after a drawdown pause. This clearly distinguishes it from sibling tools like strategy_pause and strategy_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 explicitly explains when this tool is needed: when the drawdown kill switch has latched the strategy to paused_drawdown and owner action is required. It does not name alternative tools or state when not to use it, but the context is specific enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_sentiment_createADestructiveInspect
Create a sentiment strategy -- trades an aggregate sentiment score.
Buys when the score is >= bull_threshold (flat), sells when it is
<= bear_threshold (holding); the neutral band holds. The score is
sourced live from market intelligence each tick, or pinned via
sentiment_score. DISCRETIONARY (SEC framework): targeting
a tokenized SECURITY forces per-execution user_confirmed at execution
(crypto stays fully autonomous). Call asset_classification first.
risk / direction params: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| allow_short | No | ||
| usd_per_buy | Yes | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| bear_threshold | No | ||
| bull_threshold | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| sentiment_score | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the core trading behavior, the neutral band, live vs pinned sentiment sources, and the SEC/discretionary requirement for per-execution user confirmation on tokenized securities. This is substantial, decision-relevant behavioral context.
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 compact and front-loaded: purpose first, then trading logic, data source, compliance behavior, prerequisite, and a pointer. Every sentence carries useful information with no 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 description covers selection-critical behavior well, but with 0% schema coverage and 13 parameters, it is not fully self-sufficient for invocation. It leans on a sibling tool for risk/direction semantics and leaves several parameters such as usd_per_buy, slippage_bps, source_token, and interval_seconds unexplained.
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 compensate. It explains bull_threshold, bear_threshold, and sentiment_score, and points to strategy_dca_create for risk/direction params, but most of the 13 parameters remain effectively undocumented in this tool's own description.
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 function: creating a sentiment strategy that trades an aggregate sentiment score. It also explains the buy/sell threshold logic, which differentiates it from other strategy creation tools. The purpose is unmistakable.
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 gives a clear prerequisite ('Call asset_classification first') and a useful cross-reference for risk/direction parameters. It does not explicitly state when not to use this tool or name alternative strategy types, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_snipe_createADestructiveInspect
Create a snipe/scalping strategy -- dip-buy with a fast take-profit/stop exit.
Flat: buys usd_per_buy when price is entry_dip_pct below the close
lookback ticks ago. Holding: exits on a tight take_profit_pct OR
stop_loss_pct -- many small round-trips. Runs on a short interval
(default 60s) since it reads a per-tick rolling price window that must
accumulate lookback + 1 observations before it can enter.
risk / direction params: see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| lookback | No | ||
| allow_short | No | ||
| usd_per_buy | Yes | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| entry_dip_pct | No | ||
| stop_loss_pct | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| take_profit_pct | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the annotations: it describes the flat-state logic (buys on dip), the holding-state exits (take profit or stop loss), and the dependency on a rolling price window with a warm-up requirement. This gives meaningful insight into how the strategy executes without contradicting 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 well-structured paragraphs. The first sentence is a high-level summary, followed by concise operational details. Every sentence contributes value, and the reference to another tool avoids redundant documentation.
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 presence of an output schema and the annotations, the description covers the essential logic and constraints (entry conditions, exit conditions, warm-up period). It doesn't discuss prerequisites like wallet funding or error handling, but the output schema and annotations cover return values and safety. The tool is complex, but the description is sufficient for a competent agent 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?
Even though the schema has 0% description coverage, the text defines the core parameters: usd_per_buy, entry_dip_pct, lookback, take_profit_pct, stop_loss_pct, and interval_seconds. It also points to strategy_dca_create for risk/direction params. This compensates well for the schema gap, though some parameters like slippage_bps and source_token go 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 opens with 'Create a snipe/scalping strategy -- dip-buy with a fast take-profit/stop exit,' which clearly identifies the action (create), the resource (strategy), and the specific strategy type (snipe/scalping). It distinguishes itself from sibling strategy creation tools by specifying the dip-buy logic and fast exit approach.
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 the strategy runs on a short interval and requires the per-tick rolling window to accumulate lookback + 1 observations before entering, giving the agent a concrete condition for use. It also references strategy_dca_create for risk/direction params, guiding the agent on related tools, though it doesn't explicitly list alternatives or when NOT to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_statusARead-onlyIdempotentInspect
Status + last execution of one strategy (scoped to the caller's wallet).
| Name | Required | Description | Default |
|---|---|---|---|
| strategy_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety. The description adds 'scoped to the caller's wallet', which is a useful constraint. No contradictions.
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 concise sentence that is front-loaded and contains no wasted words. Every part 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?
With a simple parameter set and output schema available, the description is nearly complete. Minor gaps in usage guidance and parameter semantics are offset by the tool's simplicity and existing structured data.
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 should clarify parameters. It mentions 'scoped to the caller's wallet' but does not explain strategy_id or wallet_address beyond their names. New users may need more context.
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 explicitly states 'Status + last execution of one strategy', using a clear verb (status/retrieve) and resource (strategy), and it distinguishes from siblings like 'strategy_list' by focusing on a single strategy.
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 on when to use vs. alternatives (e.g., 'strategy_list' for multiple, 'strategy_pause' for state changes). The description implies singling out one strategy but lacks explicit comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_stoploss_createADestructiveInspect
Create a stop-loss / take-profit / trailing-stop monitor on a held position.
position_amount is base units of target_token to liquidate on
trigger. At least one of stop_loss_pct / take_profit_pct / a trailing
config should be set (fractions, e.g. 0.15 == 15%).
Direction (optional, deterministic signal): direction_mode /
allow_short / regime_override -- see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| trailing | No | ||
| allow_short | No | ||
| entry_price | No | ||
| slippage_bps | No | ||
| source_token | No | USDC | |
| target_token | Yes | ||
| stop_loss_pct | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| position_amount | Yes | ||
| regime_override | No | ||
| take_profit_pct | No | ||
| interval_seconds | No | ||
| trailing_distance_pct | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as destructive (destructiveHint: true) and non-read-only (readOnlyHint: false). The description adds that position_amount is 'base units of target_token to liquidate on trigger,' clarifying the execution side effect, and refers to a 'monitor' which implies ongoing auto-liquidation. It does not mention that creating this monitor may override or cancel existing ones, nor does it warn that trading will occur. Given the annotation already flags destructiveness, the description adds some context but not comprehensive behavioral detail.
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, front-loaded with the primary purpose, then dives into the most critical parameter (position_amount) and a key constraint (at least one trigger). It groups related parameters (direction settings) and points to another tool for details, avoiding repetition. The structure is logical and compact, though it skips over many other parameters.
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 has 15 parameters, 3 required, and no schema descriptions, the description falls short. It does not explain the meaning or interaction of most parameters, nor does it mention what happens upon trigger (e.g., market order execution, fees, partial fills). It also does not clarify the role of wallet_address and target_token beyond implying a held position. While an output schema exists, the description does not enrich understanding of the tool's behavior or edge cases, making it incomplete for reliable invocation.
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 explain parameters itself. It covers only position_amount, stop_loss_pct, take_profit_pct, trailing config, and direction_mode/allow_short/regime_override via a reference to strategy_dca_create. It does not explain risk, entry_price, slippage_bps, source_token, target_token, wallet_address, interval_seconds, trailing_distance_pct, or the exact relationship between trailing (boolean) and trailing_distance_pct. Many parameters remain undefined, leaving the agent to infer their meaning. This is insufficient for a 15-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 specific action: 'Create a stop-loss / take-profit / trailing-stop monitor on a held position.' This specifies the verb (create), resource (monitor), and its three variants, distinguishing it from other strategy creation siblings like strategy_dca_create and strategy_arb_create. It also hints at the scope (on a held position) without ambiguity.
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 a key usage rule: 'At least one of stop_loss_pct / take_profit_pct / a trailing config should be set.' It also points to strategy_dca_create for direction-related parameters, indicating where to look for additional options. However, it does not explicitly state when to choose this tool over, say, strategy_protect_create or strategy_hedge_create, nor when not to use it. The guidance is useful but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_vault_createADestructiveInspect
Create a vault strategy -- a target-allocation basket held via rebalancing.
Shares the rebalance executor -- identical config/mechanics to
strategy_rebalance_create (target_allocation mint->weight,
drift_threshold_pct) -- framed as a passive basket rather than an active
rebalance loop. No external vault/LP deposit (hard rule 1): the
non-custodial swap pipeline only rotates spot holdings toward the target
weights.
Direction (optional, deterministic signal): direction_mode /
allow_short / regime_override -- see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| allow_short | No | ||
| slippage_bps | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| interval_seconds | No | ||
| target_allocation | Yes | ||
| drift_threshold_pct | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, destructive operation, but the description adds substantive behavioral context: there is no external vault/LP deposit, the swap pipeline is non-custodial, and it only rotates spot holdings toward target weights. This meaningfully clarifies what the tool actually does and does not do beyond the annotation flags.
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 efficiently structured with the core purpose front-loaded, followed by the most important behavioral distinction and a pointer to sibling docs. The phrase 'hard rule 1' is an unexplained internal reference that costs a point, since an external agent may not know what rule 1 is.
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 has 9 parameters and output schema, the description covers the central semantics and routes the agent to strategy_dca_create for reusable direction config. It is mostly complete for selection and invocation, though the unexplained 'hard rule 1' and underspecified parameters like risk prevent a perfect score.
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 the parameter-semantics burden. It does explain target_allocation as mint->weight, drift_threshold_pct, and the direction-related parameters (direction_mode, allow_short, regime_override), but it leaves risk, slippage_bps, wallet_address, and interval_seconds without semantic guidance. This partial compensation warrants a mid-range score.
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 and resource: 'Create a vault strategy', then defines it as a 'target-allocation basket held via rebalancing'. It differentiates itself from strategy_rebalance_create by framing this as a passive basket rather than an active rebalance loop, so an agent can distinguish the tool from its closest sibling.
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 names the closely related strategy_rebalance_create and explicitly states that this tool shares the same executor but is a passive-basket framing. It also points to strategy_dca_create for the directional parameters, giving an agent a clear path to related alternatives. It stops short of an explicit when-to-use vs. when-not-to-use list, so it loses one point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_yield_farm_createADestructiveInspect
Create a yield-farm strategy -- maintains a target basket allocation.
Shares the rebalance executor (config identical to
strategy_rebalance_create): depositing into an external yield protocol
/ LP position has no faithful swap-pipeline analogue, so this models a
yield farm as keeping a target allocation across the basket via converging
rebalance swaps (hard rule 1: the non-custodial pipeline only rotates spot
holdings, never deposits externally).
Direction (optional, deterministic signal): direction_mode /
allow_short / regime_override -- see strategy_dca_create.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | ||
| allow_short | No | ||
| slippage_bps | No | ||
| direction_mode | No | ||
| wallet_address | Yes | ||
| regime_override | No | ||
| interval_seconds | No | ||
| target_allocation | Yes | ||
| drift_threshold_pct | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true and readOnlyHint=false; the description adds the modeling approach (converging rebalance swaps) and 'hard rule 1' that the non-custodial pipeline only rotates spot holdings. This provides behavioral context beyond the flags without contradicting them, though it doesn't disclose what a destructive operation would do in this context. The 'never deposits externally' constraint is a valuable behavioral caveat not inferable from 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 packed but each sentence serves a purpose: a clear one-liner, modeling rationale with the hard rule, and a pointer for optional params. The density is appropriate for an expert-facing tool, though it's denser than average and the 'hard rule 1' introduction is slightly cryptic without prior 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?
Given the presence of an output schema (no need to document returns) and annotations covering side-effect flags, the description covers purpose, modeling, constraints, and parameter grouping. The only minor gap is the lack of explicit prerequisites for wallet_address or an example allocation format, but the sibling references and hard rule give an agent enough to proceed 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 schema description coverage at 0%, the description compensates by grouping direction_mode/allow_short/regime_override as a 'deterministic signal' and pointing to strategy_dca_create. It also signals 'target basket allocation' for target_allocation and implies config params mirror strategy_rebalance_create. However, individual parameters like risk, slippage_bps, and interval_seconds are left to the sibling reference, giving no direct semantics for several fields.
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?
States a specific verb 'Create' + resource 'yield-farm strategy' and differentiates from siblings strategy_rebalance_create and strategy_dca_create. The modeling distinction (external yield protocol has no analogue) further distinguishes it. A clear, unambiguous purpose with sibling references.
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?
References sibling tools strategy_rebalance_create (shared executor/config) and strategy_dca_create (direction params), giving clear context on relationships. However, it stops short of an explicit when-to-use versus strategy_rebalance_create beyond the modeling rationale, relying on the 'hard rule' for clarity. This is clear context with implied but not exhaustive exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_parameter_adjustmentARead-onlyIdempotentInspect
Historical parameter observations for one of YOUR strategies (free read).
Compares the strategy's realised outcomes against your other strategies of the same type that ran different parameter values, and returns the observed differences ranked by realised P&L -- historical performance data only, never advice, and nothing is changed by this call (PROPOSE flow: acting on an observation is your call via the strategy tools, where every policy/risk gate still applies).
Workflow: ORIENT -> DECIDE step -- review observations, then adjust via strategy tools if YOU decide to.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| strategy_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description reinforces this by stating 'nothing is changed by this call' and emphasizes it is historical data only. It adds context about the comparison and ranking logic, which goes beyond 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 well-structured, starting with the core purpose, then details and workflow. It is slightly verbose with some repetition (e.g., 'never advice' mentioned twice), but overall each sentence adds value and the tool's behavior is clearly communicated.
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 availability of an output schema, the description adequately covers purpose, usage, and behavioral transparency. It lacks detail on parameters, but that is already captured in parameter semantics scoring. The tool's role in the workflow is clearly explained, making it complete enough for agent usage.
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 compensate for parameter meaning. However, it only implicitly mentions 'strategy_id' and 'wallet_address' in the context of 'one of YOUR strategies' but does not explain 'caller_id' or provide specific parameter semantics. The description fails to add sufficient meaning beyond 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 clearly states the tool's purpose: providing historical parameter observations by comparing a strategy's outcomes against other strategies with different parameter values, ranked by P&L. It distinguishes itself from sibling tools that actually modify strategies, clarifying it only returns data, not advice.
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 explicitly states when to use the tool (for reviewing parameter performance) and when not to (it's not advice; acting on observations requires using strategy tools). It outlines the workflow (ORIENT -> DECIDE) and mentions alternatives (strategy tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_infoARead-onlyIdempotentInspect
Token metadata, price, liquidity, volume, holder count.
Provide token_address (mint) or a known symbol. Merges Helius (metadata) with Birdeye (market data).
Free (no technology service fee) -- a read with no transaction notional.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | ||
| caller_id | No | ||
| token_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly annotations, it mentions that the tool is free, has no technology service fee, and is a read with no transaction notional. It also discloses that it merges data from Helius and Birdeye, providing useful implementation context.
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 and avoids fluff, covering key aspects in three sentences. The structure is clear, though the initial list of outputs is a bit terse.
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?
It explains what the tool returns, how to specify inputs, data sources, cost, and read-only nature. It does not describe error cases or output format, but for a read tool with such a straightforward purpose, this is adequate.
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 meaning to token_address (mint) and symbol (known symbol), but does not explain caller_id. This covers about two-thirds of the parameters, providing useful clarification beyond the bare 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 clearly states that the tool returns token metadata, price, liquidity, volume, and holder count. This is a specific, action-oriented summary that distinguishes it from sibling tools like get_token_classification or get_token_risk_assessment.
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 gives input guidance ('Provide token_address (mint) or a known symbol') but does not explain when to use this tool over alternatives. It lacks explicit context such as 'Use when you need comprehensive token info' or comparisons to other token-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_equityADestructiveInspect
Spot-trade a tokenized equity (xStocks / Ondo) via Jupiter, non-custodial.
side: buy | sell. amount is in base units of the INPUT token (USDC 6dp for a
buy, the equity token for a sell). These are tokenized SECURITIES: the call
is geo-gated (Reg S = no US persons; declare jurisdiction once via the
jurisdiction arg) and OFAC-screened, and requires per-execution confirmation
-- WITHOUT confirm=true it returns a quote + disclaimer and does NOT execute
(no autonomous equity execution). With confirm=true it returns an UNSIGNED
base64 tx to sign + broadcast; pass signed_transaction to broadcast a
caller-signed tx. Value-bearing: past the daily free tier an x402
payment_header is required. ip = caller origin IP for the Reg S geo gate
(US IP -> refused even with an attestation; an agent's Railway Singapore
egress resolves to SG and passes). venue_hint is ADVISORY, never required -- equity routes via the issuer
registry (one surface today); an unknown hint raises.
idempotency_key (optional): see jupiter_swap -- same
replay-on-retry semantics, same key reused across build + broadcast.
verify (extending default True): when
broadcasting (signed_transaction supplied), await on-chain confirmation
and re-read the equity mint balance -- the response gains a
verification block ({confirmed, slot, post_state,
expected_vs_actual}). Gate follow-on decisions on
verification.confirmed, never on tx_signature alone. Set False to
skip for latency-sensitive callers. Verify any prior signature later
with the standalone verify_transaction tool.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| side | Yes | ||
| amount | Yes | ||
| symbol | Yes | ||
| verify | No | ||
| confirm | No | ||
| caller_id | No | ||
| venue_hint | No | ||
| jurisdiction | No | ||
| pay_in_crank | No | ||
| slippage_bps | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| allow_unverified | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and non-idempotent, but the description goes far beyond: it discloses the two-phase execution (quote vs. execute), the confirm flag requirement, the unsigned transaction flow, the geo-gate on IP, the OFAC screening, the daily free tier and x402 payment_header, and the verification block behavior. All of this adds critical context that the agent needs to call the tool correctly and safely, without any contradiction to 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 long but tightly packed with essential operational details. It starts with the core purpose, then systematically covers side/amount units, geo/confirmation requirements, the verification flow, idempotency, and the venue hint. Every sentence contributes meaning; there is no filler. While it could be slightly more streamlined, the density is justified by the tool's complexity.
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 16-parameter tool with an output schema. The description covers the execution pipeline thoroughly: the confirm gating, the unsigned tx flow, the verification block and its use, the geo/IP constraints, and payment requirements. It also references jupiter_swap for idempotency semantics and verify_transaction for later verification. Some parameters like slippage_bps and pay_in_crank are left unexplained, but they have sensible defaults and are not central to the core workflow. For a tool of this complexity, the description is remarkably 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?
The input schema has 0% description coverage, so the description carries the entire burden. It explains the meaning of side (buy/sell), amount units (base units of input token), confirm, verify, jurisdiction, ip, venue_hint, idempotency_key, payment_header, and signed_transaction. It does not explain all 16 parameters (e.g., slippage_bps, pay_in_crank, allow_unverified, caller_id), but it covers the critical ones with sufficient detail. Given the schema is bare, this is a substantial compensation, so a 4 is appropriate rather than 5.
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 precise statement: 'Spot-trade a tokenized equity (xStocks / Ondo) via Jupiter, non-custodial.' It identifies the specific asset class, venue, and execution model, clearly distinguishing it from general-purpose swap tools like jupiter_swap or lst_swap. The wording is unambiguous about the resource and action.
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 explicitly states when to use this tool (for tokenized equities) and when not to (e.g., general swaps go to jupiter_swap). It also names an explicit alternative for verification: 'Verify any prior signature later with the standalone verify_transaction tool.' The geo-gating and jurisdiction requirements further clarify the usage constraints. This is a strong guidance that routes the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpublish_journal_cardARead-onlyIdempotentInspect
Withdraw a published journal card (free write).
Publishing a decision with share_journal_card is an explicit act by the owner; this is the equally explicit act of taking it back. After this call, the public card at its card_url and the OG-image asset both 404 immediately -- the row is private again, exactly as it was before the first publish.
Wallet-scoped like every other Layer 1 tool: you can only unpublish a
decision your own wallet owns. Calling this on a decision that is
already private (or was never published) is a safe no-op, not an
error -- unpublished in the response tells you whether a
withdrawal actually happened.
The cached OG image, if one was generated, is left on disk (not deleted) -- the public routes gate on publication state, not file presence, so the takedown is immediate either way, and a later re-publish of the same decision reuses the image instead of paying to regenerate it.
Workflow: the symmetric undo of share_journal_card.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| decision_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint: true, but the description clearly describes a mutating operation: it 'withdraws' a publication, makes the card 404, and makes the row 'private again.' This is a direct contradiction with the readOnly annotation, so the score must be 1 regardless of how much other behavioral detail is provided.
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 core action is front-loaded, and the remaining paragraphs each add useful non-obvious behavior: 404 behavior, no-op result, cached-image handling, and workflow pairing. There is some redundancy and rhetorical padding, but the structure is serviceable.
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?
With an output schema present, the description covers essentially everything an agent needs: immediate takedown behavior, privacy restoration, safe no-op semantics, response indication, ownership scope, and the relationship to share_journal_card. This is unusually 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?
Schema coverage is 0%, so the description must compensate. It clarifies wallet_address semantics via 'wallet-scoped' and decision_id semantics via 'a decision that is already private,' but it never mentions caller_id or any parameter formats. Compensation is partial, not complete.
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 an explicit verb and resource: 'Withdraw a published journal card (free write).' It immediately distinguishes this from its counterpart by calling it 'the symmetric undo of share_journal_card' and clarifies the scope to cards the caller's wallet owns.
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 names the counterpart tool share_journal_card, states the ownership precondition explicitly, and explains when no-op behavior applies. It gives clear guidance on when this tool is appropriate versus pointless to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unstake_lstADestructiveInspect
Unstake an LST back to SOL (non-custodial).
lst_token is a mint (mSOL/jitoSOL/bSOL); amount in base units. mSOL routes via Marinade, others via the Sanctum router. Returns an UNSIGNED base64 tx. The technology service fee is charged on the unstaked-LST notional past the daily free tier (x402 payment_header).
idempotency_key (optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-unstaking. Reuse the SAME key across the build call and its
signed_transaction completion call -- see liquid_stake;
the two legs dedupe independently, so this never raises
IDEMPOTENCY_CONFLICT.
signed_transaction / verify (two-phase execution):
see liquid_stake -- re-call with the signed tx and Crank broadcasts it,
confirms it on-chain, and re-reads the LST + SOL balances.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| verify | No | ||
| caller_id | No | ||
| lst_token | Yes | ||
| pay_in_crank | No | ||
| payment_header | No | ||
| wallet_address | Yes | ||
| idempotency_key | No | ||
| signed_transaction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond annotations: it reveals non-custodial execution, that the returned transaction is unsigned and base64, that fees are charged past the free tier, and that re-trying with the same idempotency key replays the original result rather than re-uming an unknown current action. It also explains the Crank broadcast confirmation and balance-re-read 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 long but every sentence adds a meaning: purpose, units, mint selection, returning format, costing. It keeps repeated details compressed by saying 'see liquid_stake' instead of duplicating the two-phase protocol. The layout groups the optional key and the signed transaction phases into understandable chunks.
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 a 9-parameter tool with an existing output schema, the description covers the main decision points and risks: route selection, base units, unsigned return step, idempotency replay, and two-phase broadcast. It delegates a part of the two-phase detail to liquid_stake and leaves one or two optional params unexplained, but those are optional and defaulted.
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 carry the load. It does: amount is 'in base unit', lst_token is clearly one of mSOL/jitoSOL/bSOL, idempotency_key behavior is fully explained, and payment_header is tied to fee context. However, wallet_address (a required parameter) and pay_in_crank/caller_id are left to inference, so it is not fully complete.
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 specific verb and resource: 'Unstake an LST back to SOL'. It also clarifies non-custodial ownership and returns an unsigned transaction, so an agent can distinguish this from related staking, swapping, and bridge tools. This is more than minimally clear.
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 intended use is implicit but unmistakable: 'Unstake an LST' tells an agent when this tool is the right one. It also gives route-specific behavior and the two-phase execution flow, but it doesn't name alternatives or use when-not-to-use language. Clear context but no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_agent_profileAIdempotentInspect
Patch an agent profile's metadata (display_name, capabilities, endpoints).
metadata is a dict of writable fields; capabilities are validated if present.
| Name | Required | Description | Default |
|---|---|---|---|
| metadata | Yes | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability, idempotence, and non-destructiveness. The description adds that capabilities are validated if present, which is useful 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?
Two concise sentences, no wasted words, front-loaded with core action and example fields.
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?
Output schema exists, so return values are covered. However, description does not explain the role of wallet_address or caller_id for tool use, leaving completeness gaps.
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%; description adds meaning for metadata (dict of writable fields, validated capabilities) but does not explain wallet_address or caller_id.
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 patches an agent profile's metadata and lists specific fields (display_name, capabilities, endpoints). This distinguishes it from get_agent_profile and other update 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 use for updating agent profile metadata but provides no explicit guidance on when to use vs alternatives, prerequisites, or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
venue_risk_comparisonARead-onlyIdempotentInspect
Side-by-side risk comparison of two venues for a routing decision.
Read-only. Returns each venue's full risk record, the safer venue, and the composite-score delta. e.g. compare "jupiter" vs "pacifica" before routing.
| Name | Required | Description | Default |
|---|---|---|---|
| venue_a | Yes | ||
| venue_b | Yes | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive. The description adds value by specifying it returns full risk records, the safer venue, and composite-score delta, plus an example. 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?
The description is concise and front-loaded: the first sentence states the core purpose, followed by details in the second sentence. No redundant 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?
Given the rich annotations and existence of output schema, the description sufficiently covers the tool's behavior. It explains inputs, outputs, and provides an example, leaving no critical gaps for the agent to infer.
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?
Parameter names (venue_a, venue_b) are self-explanatory and the example provides context ('jupiter' vs 'pacifica'). However, with zero schema description coverage, the description should be more explicit about parameter meanings and types. caller_id lacks any description.
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 performs a side-by-side risk comparison of two venues for routing decisions, using specific verb 'compare' and providing an example. This distinguishes it from single-venue risk tools like get_venue_risk_score.
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 clear context ('before routing') and implies the tool is for comparison scenarios. However, it does not explicitly state when not to use it or mention alternatives like get_venue_risk_score or get_risk_assessment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_tokenARead-onlyIdempotentInspect
Multi-layer authenticity check for a token mint (read-only, no execution).
Runs the same five-layer verification the swap/trade tools enforce before building a transaction: registry allow-list, Jupiter verified list, Metaplex metadata authority, minimum liquidity, and token age + holder count. Returns verification_status (verified | unverified | suspicious | blocked), the reasons, non-blocking warnings, and the per-layer findings. Call this before swapping into an unfamiliar token.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | ||
| caller_id | No | ||
| token_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description meaningfully enriches this by enumerating the five concrete verification layers (registry allow-list, Jupiter, Metaplex authority, liquidity, age+holder count) and defining the return envelope (four statuses, reasons, warnings, per-layer findings). This is exactly the additive context expected beyond the structured fields — just slightly short of perfect for not detailing behavior on optional inputs.
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, each earning its place: purpose, mechanics, and instruction. The middle sentence is dense but well-organized — the list of layers and the parenthetical distinct-value enumeration make it scannable. Minor deduction for the long middle sentence arguably burying the return contract.
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 output schema covers the return shape and annotations cover the safety profile, so the description's remaining gap — the semantics of symbol and caller_id — is the sole incomplete piece. For a read-only verification tool, this is a complete-enough contract to guide correct invocation.
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 coverage, the description bears full burden for parameter semantics. It strongly contextualizes token_address via the 'token mint' and 'unfamiliar token' framing, but symbol and caller_id are never mentioned — are they lookups, filters, or logging metadata? Given the 0% coverage baseline, the description should have compensated more fully.
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 verb+resource ('authenticity check for a token mint') and immediately disambiguates scope with '(read-only, no execution)'. It enumerates the five verification layers, making it instantly distinguishable from siblings like verify_transaction (transaction-level), token_info, or get_token_classification without opening schemas.
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 closing directive, 'Call this before swapping into an unfamiliar token,' is an explicit when-to-use instruction, and the tie-in to the swap/trade tool enforcement flow gives context on when the same logic is invoked. It doesn't name an alternative or explicitly state when not to use it, but the usage context is clear enough to route an agent 95% of the time.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_transactionARead-onlyIdempotentInspect
Verify any prior transaction signature on demand (FREE read).
Post-trade verification (harness spec R13): awaits
on-chain confirmation of tx_signature at commitment level (up to
timeout_s) and, when a state hint is supplied, re-reads the relevant
state to compare against what was expected:
mint(+wallet_address): re-reads that SPL/SOL token balance.market(+wallet_address): re-reads the Drift perp position.protocol(+wallet_address, optionalmarket/marginfi_account): re-reads the lending obligation health.
Returns {confirmed, slot, commitment, post_state, expected_vs_actual, retry_guidance}. confirmed is False (never True) on a timeout --
NEVER treat an unconfirmed/timed-out result as success; retry_guidance
names the next step. Use this after signing + broadcasting a transaction
yourself (place_perp_order, lend_deposit/borrow/repay, and every other
unsigned-tx tool never broadcast server-side) to confirm it actually
landed before treating the position/balance as changed.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | No | ||
| market | No | ||
| protocol | No | ||
| caller_id | No | ||
| timeout_s | No | ||
| commitment | No | confirmed | |
| tx_signature | Yes | ||
| wallet_address | No | ||
| marginfi_account | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses critical runtime behavior: it awaits on-chain confirmation up to a timeout, re-reads state when hints are provided, and crucially states that confirmed is always False on timeout and must never be treated as success. It also names the retry_guidance output field, which is valuable operational context.
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?
Though long, the description is densely informative and well-structured: a one-line summary, a grouped behavior explanation with bullets, return-field semantics, and a usage directive. Every section earns its place, and critical caveats are front-loaded with emphasis.
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 9-parameter verification tool with an output schema, the description covers the operation, the state-verification variants, timeout semantics, failure handling, and the exact circumstances in which the tool should be invoked. Nothing needed to call it correctly is materially missing.
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 carries the full burden and does so well. It explains tx_signature, commitment, timeout_s, and the semantic role of mint, market, protocol, wallet_address, and marginfi_account via the three state-hint bullets. Only caller_id is left undocumented, which is minor relative to the strong compensation overall.
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 specific verb and resource: 'Verify any prior transaction signature on demand.' It then elaborates the exact post-trade verification workflow and lists distinct state-hint modes, making the tool's scope unmistakable and clearly distinct from sibling verification/status 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 explicitly states when to use the tool: 'Use this after signing + broadcasting a transaction yourself' and names concrete caller tools like place_perp_order and lend_deposit. It also clarifies that tools which never broadcast server-side do not require this verification, giving the agent clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_treasury_settlement_statusARead-onlyIdempotentInspect
On-chain proof the treasury actually received settled x402 USDC.
Wires services.x402_settlement.verify_treasury_settlement (
real on-chain proof: treasury USDC ATA balance read as the primary signal,
plus settle-tx signature confirmation) up to an MCP tool -- the follow-up
to which intentionally split the on-chain proof
logic from this wiring to avoid file collisions across parallel sessions.
signatures is optional: when omitted, this tool pulls recent settled
X402PaymentRecord.tx_signature values itself (via
django_bridge.recent_x402_signatures, same window shape as
reconcile_x402_settlement) over the last since_iso window (or all
time), capped at signature_limit to bound RPC round trips -- so a
caller does not have to hand-assemble signatures to get a real proof.
Pass an explicit signatures list to check specific settle-tx hashes
instead (bypasses the DB lookup entirely).
verified is True only when every checked signature confirms on-chain
AND (if expected_usd is given) the treasury balance covers it -- see
the service docstring for the full non-falsely-asserting contract. Raises
CONFIG_ERROR if no treasury wallet is configured, UPSTREAM_ERROR
(retryable) on an RPC failure -- never a silent verified=False.
FREE read (never gated, never in x402 PAID_TOOLS): public addresses/ signatures/balances only, never a key (hard rule 1).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| since_iso | No | ||
| signatures | No | ||
| expected_usd | No | ||
| signature_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint/idempotentHint annotations by explaining the exact verified=true contract, the failure modes (CONFIG_ERROR, retryable UPSTREAM_ERROR), and the guarantee that failures are never reported as silent verified=false. It also clarifies the privacy boundary: only public data is exposed, never keys.
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 front-loaded with the core purpose and is internally organized, but it includes extraneous implementation history ('the follow-up to which intentionally split the on-chain proof logic... to avoid file collisions across parallel sessions') and a cryptic reference to 'hard rule 1'. These details add noise without helping an agent select or invoke the tool.
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's complexity, the annotations, and the presence of an output schema, the description is complete: it defines success conditions, error behavior, optional-parameter semantics, access gating, and data-privacy constraints. An agent has enough context to call this tool correctly and to interpret its verified 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%, so the description carries the full parameter-documentation burden. It compensates thoroughly for signatures, since_iso, signature_limit, and expected_usd, explaining their behavior and interactions. Only caller_id is left undocumented, but it has a default and appears to be a minor field.
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 sentence states a concrete and specific purpose: proving on-chain that the treasury received settled x402 USDC. This clearly distinguishes the tool from generic verifiers like verify_transaction and verify_token by naming both the asset class and the settlement domain.
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 clear operational guidance: omit signatures to auto-fetch recent ones, or pass an explicit list to bypass the DB lookup. It also explains the free-read access posture. It does not explicitly name alternatives to choose between, but the usage logic is specific enough to be actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_statusBRead-onlyIdempotentInspect
Current state, policy summary, recent activity, total volume, and tier.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, fully covering safety and idempotency. The description adds value by specifying the exact data returned (state, policy, activity, volume, tier), which goes beyond the annotations and helps the agent understand the scope of the response.
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 extremely concise, consisting of a single line that enumerates the returned items. It is front-loaded and wastes no words. However, it may be slightly too terse, failing to include parameter context that could be added without bloat.
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 presence of an output schema, the description does not need to explain return values, but it lacks any parameter documentation or usage context. For a simple query tool with 0% schema coverage, the description should at least clarify the required parameter to avoid ambiguity. The tool is moderately complete but has notable gaps.
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 the description does not explain any parameters. The required 'wallet_address' field is not described, and the optional 'caller_id' is not mentioned. The description provides no additional semantic meaning beyond the schema field names.
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 lists the returned data components (state, policy summary, recent activity, total volume, tier), clearly indicating that this tool retrieves wallet information. While it does not explicitly state 'get' or 'retrieve', the list makes the purpose unambiguous. It distinguishes from sibling tools like 'get_balances' or 'token_info' by focusing on a broader wallet overview.
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 explicit guidance on when to use this tool versus alternatives. The description only states what it returns, leaving the agent to infer that it is for general wallet status queries. No exclusions or alternative tool mentions are provided.
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. Dates show when Glama detected each change.
2 tool updates
- Changed
bridge_out1 field changed- added
Input schema / properties / order_idAdded value: +{ + "default": "", + "type": "string" +}
- Added
get_bridge_status
3 tool updates
- Changed
pledge_to_ilo3 fields changed- added
Input schema / properties / disclosures_acknowledgedAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "default": "", + "type": "string" +}
- Added
report_registry_install - Added
unpublish_journal_card
3 tool updates
- Added
get_journal_card - Added
intelligence_suggestion_approve - Added
share_journal_card
19 tool updates
- Added
bridge_in - Added
bridge_out - Added
claim_ilo_tokens - Changed
discover_strategies1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Changed
get_all_venues_status1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Changed
get_balances1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Added
get_bridge_quote - Added
get_ilo_details - Changed
get_leaderboard1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Changed
get_lending_rates1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Changed
get_market_briefing1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Added
get_my_pledge_status - Changed
get_transaction_history1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Changed
perp_markets_all1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Changed
perp_positions_all1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Added
pledge_to_ilo - Changed
portfolio_snapshot1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
- Added
search_tools - Changed
strategy_list1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "concise", + "type": "string" +}
14 tool updates
- Removed
assign_ticket - Removed
crank_dependency_status - Removed
crank_prompt_health - Removed
get_support_dashboard - Removed
get_support_ticket - Removed
go_live_status - Removed
list_support_tickets - Removed
list_turnkey_drift_backlog - Removed
note_create - Removed
reconcile_turnkey_policy - Removed
reply_to_ticket - Removed
set_integrator_share - Removed
set_ticket_priority - Removed
update_ticket_status
5 tool updates
- Added
clear_agnta_grant - Added
poll_agnta_grant_clear - Added
register_counterparty_set - Added
request_agnta_grant_clear - Added
set_agnta_grant
1 tool update
- Added
sidecar_health
1 tool update
- Changed
lend_deposit1 field changed- added
Input schema / properties / venue_hintAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
15 tool updates
- Changed
cancel_perp_order2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
close_perp_position2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
create_execution_intent3 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / pay_in_crankAdded value: +{ + "default": false, + "type": "boolean" +}
- Added
declare_jurisdiction - Changed
journal_append1 field changed- added
Input schema / properties / tx_signatureAdded value: +{ + "default": "", + "type": "string" +}
- Changed
jupiter_swap2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
leverage_close2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
leverage_long2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
perp_close2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
perp_modify2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
perp_open_long2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
perp_open_short2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
place_perp_order2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
short_close2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
short_open2 fields changed- added
Input schema / properties / ipAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / jurisdictionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
12 tool updates
- Changed
cancel_perp_order2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
close_perp_position2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
lend_borrow2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
lend_deposit2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
lend_repay2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
liquid_stake2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
lst_swap2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
perp_close2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
perp_open_long2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
perp_open_short2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
place_perp_order2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
unstake_lst2 fields changed- added
Input schema / properties / signed_transactionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
5 tool updates
- Added
list_turnkey_drift_backlog - Added
poll_session_signer_authorization - Added
reconcile_turnkey_policy - Added
request_session_signer_authorization - Changed
trade_equity1 field changed- added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
8 tool updates
- Added
get_emerging_patterns - Added
get_my_contribution_score - Changed
get_quotes2 fields changed- added
Input schema / properties / pay_in_crankAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / wallet_addressAdded value: +{ + "default": "", + "type": "string" +}
- Added
get_strategy_evolution_report - Added
list_alerts - Added
propose_template_update - Changed
set_ooda_consent3 fields changed- added
Input schema / properties / kill_threshold_enabledAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / kill_threshold_ratioAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / kill_window_daysAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +}
- Added
verify_treasury_settlement_status
6 tool updates
- Added
delete_webhook - Changed
jupiter_swap1 field changed- added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Added
list_webhooks - Added
register_webhook - Added
strategy_modify - Added
verify_transaction
2 tool updates
- Added
get_ooda_status - Added
set_ooda_consent
160 tool updates
- First observed
approve_proposal - First observed
asset_classification - First observed
assign_ticket - First observed
authorize_session_signer - First observed
backtest_strategy - First observed
bulk_send_social - First observed
cancel_perp_order - First observed
check_claim_status - First observed
claim_status - First observed
clone_strategy - First observed
close_perp_position - First observed
compose_strategy - First observed
crank_dependency_status - First observed
crank_prompt_health - First observed
create_agent_wallet - First observed
create_execution_intent - First observed
detect_regime - First observed
discover_agents - First observed
discover_strategies - First observed
enable_agent_wallet - First observed
equity_corporate_events - First observed
equity_market_hours - First observed
equity_markets - First observed
equity_positions - First observed
equity_quote - First observed
flash_loan - First observed
fund_wallet - First observed
get_agent_profile - First observed
get_all_venues_status - First observed
get_arb_discrepancies - First observed
get_balances - First observed
get_collective_insights - First observed
get_consensus - First observed
get_contrarian_signals - First observed
get_crank_score - First observed
get_cross_exchange - First observed
get_disclaimers - First observed
get_health_factor - First observed
get_ilo_adoption_status - First observed
get_indicators - First observed
get_integrator_earnings - First observed
get_integrator_stats - First observed
get_intent_status - First observed
get_leaderboard - First observed
get_lending_rates - First observed
get_lst_yields - First observed
get_market_briefing - First observed
get_market_regime - First observed
get_ml_signal - First observed
get_my_performance - First observed
get_onramp_status - First observed
get_portfolio_charter - First observed
get_quests - First observed
get_quotes - First observed
get_regulatory_updates - First observed
get_risk_assessment - First observed
get_score - First observed
get_score_leaderboard - First observed
get_signal_effectiveness - First observed
get_signals - First observed
get_social_sends - First observed
get_source_accuracy - First observed
get_source_weights - First observed
get_strategy_leaderboard - First observed
get_strategy_suggestions - First observed
get_support_dashboard - First observed
get_support_ticket - First observed
get_technology_updates - First observed
get_token_classification - First observed
get_token_risk_assessment - First observed
get_trading_workflow - First observed
get_transaction_history - First observed
get_usage_report - First observed
get_venue_health - First observed
get_venue_risk_score - First observed
get_venue_status - First observed
go_live_status - First observed
journal_append - First observed
journal_query - First observed
jupiter_swap - First observed
kill_wallet - First observed
lend_borrow - First observed
lend_deposit - First observed
lend_repay - First observed
leverage_close - First observed
leverage_long - First observed
liquid_stake - First observed
list_session_signers - First observed
list_signal_catalog - First observed
list_support_tickets - First observed
lst_swap - First observed
note_create - First observed
offramp_to_fiat - First observed
perp_close - First observed
perp_funding_rates - First observed
perp_funding_rates_all - First observed
perp_markets - First observed
perp_markets_all - First observed
perp_modify - First observed
perp_open_long - First observed
perp_open_short - First observed
perp_positions - First observed
perp_positions_all - First observed
place_perp_order - First observed
poll_agent_wallet_enable - First observed
poll_wallet_policy_loosening - First observed
portfolio_snapshot - First observed
propose_allocation - First observed
publish_strategy - First observed
register_agent - First observed
register_integrator - First observed
register_referrer - First observed
reply_to_ticket - First observed
request_wallet_policy_loosening - First observed
revoke_session_signer - First observed
send_token_social - First observed
set_alert - First observed
set_integrator_share - First observed
set_liquidation_alert - First observed
set_permission_mode - First observed
set_portfolio_charter - First observed
set_ticket_priority - First observed
set_wallet_policy - First observed
short_close - First observed
short_open - First observed
short_status - First observed
sr_backtest - First observed
sr_configure_strategy - First observed
sr_detect_levels - First observed
strategy_arb_create - First observed
strategy_basis_trade_create - First observed
strategy_cancel - First observed
strategy_composite_create - First observed
strategy_copy_wallet_create - First observed
strategy_dca_create - First observed
strategy_equity_dca_create - First observed
strategy_hedge_create - First observed
strategy_list - First observed
strategy_market_make_create - First observed
strategy_momentum_create - First observed
strategy_pause - First observed
strategy_perp_grid_create - First observed
strategy_protect_create - First observed
strategy_rebalance_create - First observed
strategy_resume - First observed
strategy_sentiment_create - First observed
strategy_snipe_create - First observed
strategy_status - First observed
strategy_stoploss_create - First observed
strategy_vault_create - First observed
strategy_yield_farm_create - First observed
suggest_parameter_adjustment - First observed
token_info - First observed
trade_equity - First observed
unstake_lst - First observed
update_agent_profile - First observed
update_ticket_status - First observed
venue_risk_comparison - First observed
verify_token - First observed
wallet_status
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
- FensoryOAuthcom.fensory
Non-custodial trading for AI agents: 1,900+ assets — US stocks, treasuries, gold, 250+ perps.
Native Solana staking for AI agents. 26 MCP tools, one-shot signing, webhooks.
Non-custodial DeFi for AI agents: swaps, concentrated liquidity (V3/V4) zaps + ranges, 5 EVM chains
Safe Solana swaps for AI agents with risk checks, unsigned transactions, x402, and 3-bp fees.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI agents to interact with cryptocurrency ecosystems through wallet management, trading operations (swaps, DCA, limit orders), staking, and multi-chain support starting with Solana.37GPL 3.0
- FlicenseAqualityFmaintenanceDeFi execution and agent-to-agent economy tools for AI agents — swaps, yield, transfers, policy enforcement, trust scoring, A2A jobs, and P\&L across Ethereum, Base, Arbitrum, and Polygon.311-

trade-router-mcpofficial
AlicenseBqualityDmaintenanceNon-custodial Solana swap & limit order engine for AI agents. 21 tools - swap, limit, trailing, TWAP, DCA, combo orders - across Raydium, PumpSwap, Orca, Meteora. Jito MEV-protected execution. Ed25519-verified server messages. Private key never leaves the process.212053MIT- AlicenseNot gradedqualityBmaintenanceA non-custodial RWA service for AI agents on Solana that provides yield comparison, tokenized US-equity quotes, and ready-to-sign transactions.463MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Multiple tools overlap significantly: close_perp_position vs perp_close, get_leaderboard vs get_score_leaderboard vs get_strategy_leaderboard, get_venue_status vs get_all_venues_status, send_token_social vs bulk_send_social, and get_crank_score vs get_score. Several read-only tools have nearly identical purposes, and the descriptions do not always clarify boundaries.
Most tools follow a consistent verb_noun snake_case pattern (get_balances, create_strategy, set_alert, list_webhooks). However, there are deviations like 'lst_swap', 'jupiter_swap', 'flash_loan', 'sr_backtest', and the use of both 'get_' and 'list_' for reads, plus category prefixes like 'perp_' and 'strategy_' that vary in order. Overall still readable and predictable.
177 tools is an extreme count for any server, far exceeding the 25+ threshold for 'too many'. Even a full DeFi platform does not need this many separate operations; the surface is overwhelming and clearly not well-scoped.
The domain (Solana DeFi trading) is covered extensively across swaps, perps, lending, staking, strategies, signals, and support. However, there are notable gaps: no lend_withdraw, no direct way to close a lending position, no spot order cancellation (though aggregator-based swaps may not need it), and a general lack of tiered account management. The huge number of tools makes it hard to identify missing lifecycle steps.