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
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.2/5 across 177 of 177 tools scored. Lowest: 2.5/5.
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.
Available Tools
179 toolsapprove_proposalAInspect
Approve a pending PROPOSAL within its TTL, then re-dispatch it (non-custodial control plane, ENG-63e1517a).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by explaining the exact state transition (pending to approved), the redispatch mechanism via stored tool_name+params, and the failure semantics (stays APPROVED, not EXECUTED or PENDING, can retry). Also notes TTL and non-custodial control plane, all valuable 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?
Two dense paragraphs, each sentence adds value: TTL, mode flip, redispatch, failure handling, retry, and a pointer to source. Front-loaded with the core action, 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 tool's complexity and that an output schema exists, the description is remarkably complete. It covers prerequisites (pending, TTL, propose-mode), side effects (redispatch), failure states, retry guidance, and links to related tools. No critical gaps except optional param semantics, which are 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 must explain parameters. It only implies proposal_id through context and never mentions caller_id or approved_by. The optional params are completely unexplained, leaving the agent to guess their 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's action: approving a pending PROPOSAL within its TTL and re-dispatching it. Distinguishes from siblings by referencing propose-mode and set_permission_mode, and explains the specific state transition (pending to approved) plus redispatch 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?
Provides clear context: use for pending proposals in propose-mode within TTL, and mentions set_permission_mode as related. Also gives retry guidance on redispatch failure. However, it does not explicitly state when not to use or list alternative tools, so not 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 | ||
Tool Definition Quality
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.
assign_ticketAIdempotentInspect
Assign a support ticket to a staff user (username or id). Empty -> unassign.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| ticket_id | Yes | ||
| assigned_to | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that passing an empty string for 'assigned_to' unassigns the ticket, which is important behavior beyond annotations. However, does not mention whether assignment overwrites previous, permissions needed, or if notification sent. Annotations already indicate mutability (readOnlyHint=false) and idempotency, so description adds moderate value.
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 two clear clauses, no redundancy. Front-loaded with the primary action, followed by the special case. Efficient and 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?
Covers the core action and the unusual unassignment behavior. Missing explanation of 'caller_id' parameter. Having an output schema reduces the need to describe return values. Overall, adequate for a simple mutation tool but could improve with a brief note on the optional 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?
Description clarifies that 'assigned_to' accepts username or id and that empty string unassigns, which adds meaning beyond the schema (which only defines type as string). However, 'caller_id' is not explained, leaving its purpose ambiguous. With 0% schema description coverage, description partially compensates but misses one 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?
Clearly states the verb 'assign' and resource 'support ticket' with specific detail about assignment target (staff user via username or id) and special behavior for empty value. Distinguishes from sibling tools like reply_to_ticket and update_ticket_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?
Implies usage for assigning or unassigning tickets, but does not explicitly state when to use this tool versus alternatives such as update_ticket_status or set_ticket_priority. 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.
authorize_session_signerAIdempotentInspect
Authorize a delegated session signer for an agent wallet (non-custodial).
signer_pubkey is a keypair the USER creates and holds -- ONLY its PUBLIC key ever crosses this call (hard rule 1). Once authorized, calls that carry this signer_pubkey are trade-only: the gate rejects any transfer/ withdraw/close-account/authority-change instruction targeting a destination outside the wallet's own accounts (docs/ SESSION_SIGNER_DESIGN.md). capabilities: subset of swap|perp|lend|stake, empty/omitted = full default set. expires_at: optional ISO 8601 hard expiry. Effective on the very next call using this signer_pubkey. On a Lane 2 wallet this raises BROWSER_CONFIRMATION_REQUIRED -- call request_session_signer_authorization instead (ENG-b35851ed): minting a signer is a trust grant and must be owner-approved in the browser, never in-chat.
| 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond annotations: the non-custodial design, the hard rule that only the public key crosses the call, the trade-only restriction, the gate rejecting certain instructions, and the immediate effectiveness. It also discloses the Lane 2 browser confirmation requirement. 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 but every sentence adds value. It starts with the purpose, then explains key parameters and behavioral rules, and ends with an important alternative. The structure is logical and no unnecessary text 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?
Given the tool's complexity, the description covers the key aspects: what it does, how it works, constraints, alternatives, and the meaning of capabilities/expires_at. An output schema exists, so return values need not be described. The description is sufficient for an agent to select 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?
The description explains the nuanced parameters (signer_pubkey, capabilities, expires_at) with critical rules and defaults, which is valuable given the schema has no descriptions. However, it does not explain wallet_address, label, or caller_id, though these are more standard. Partial compensation for the 0% schema coverage, 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 description opens with a specific verb and resource: 'Authorize a delegated session signer for an agent wallet (non-custodial).' This clearly distinguishes it from sibling tools like revoke_session_signer and request_session_signer_authorization, and the subsequent details (signer_pubkey, capabilities, expires_at) reinforce the exact 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 states when to use an alternative: 'On a Lane 2 wallet this raises BROWSER_CONFIRMATION_REQUIRED -- call request_session_signer_authorization instead.' It also explains the constraints of the tool (trade-only, gate rules) and the trust-grant nature, giving clear guidance on appropriate vs inappropriate use.
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 | ||
Tool Definition Quality
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.
bulk_send_socialADestructiveInspect
Distribute one token to many X handles in one call (non-custodial, ENG-bfeacb2c).
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 (ENG-ac7961aa, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, destructive, and non-idempotent behavior. The description adds significant operational context: funds are locked into escrow, transactions are unsigned and require manual signing/broadcasting, anti-abuse gates (account age, verified wallet, daily limit), and idempotency replay semantics. 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 separate sections for recipients format, flow details, anti-abuse, and idempotency. It is slightly verbose but every sentence adds value. Could be tightened slightly 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 (7 params, no schema descriptions) and presence of output schema, the description is largely complete. It covers the main flow, idempotency, and constraints. However, it omits explanation of 'referral' and 'caller_id' parameters, and the output schema is not described (though it exists externally). Adequate 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 coverage is 0%, so the description must explain parameters. It explains 'recipients' format in detail (list of dicts with fields), 'token' as a mint, 'sender_wallet', and 'idempotency_key' with UUID example. However, 'referral' and 'caller_id' are not described, leaving a gap. Overall, it compensates well 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 tool's purpose: 'Distribute one token to many X handles in one call'. It specifies the non-custodial nature, platform (X), and contrasts with single-send alternatives implicitly. The verb 'distribute' and resource 'many X handles' is specific and distinguishes from sibling tools like send_token_social (single) and get_social_sends (read-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?
The description explains when to use the tool (bulk distribution to multiple handles) and provides details on idempotency for safe retries. It does not explicitly state when not to use it or list alternatives, but the sibling context makes the use case clear. A slight gap is the lack of explicit exclusion criteria.
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 (ENG-27ae391a, gap RAILS-4): cancel is geo-gated too --
see place_perp_order.
idempotency_key (ENG-ac7961aa, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-cancelling the order.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, and the description reinforces this with 'Cancel'. It adds valuable specifics: non-custodial nature, geo-gating, idempotency_key replay semantics, and that two-phase execution verification is simpler since no position moves. This goes 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 opens with a concise purpose statement and uses clear paragraph breaks for parameter notes. It is not overly long, though it includes internal ticket IDs (ENG-...) and a cross-reference to place_perp_order that add some noise. Overall, it is well-structured and scannable.
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 critical behavioral nuances (geo-gating, idempotency, two-phase execution) and an output schema exists, so return values are not needed. However, it relies on place_perp_order for key details and leaves several parameters (venue, acknowledge_tier_b, caller_id, ip) undocumented. For this complexity, the description is only partially 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 description coverage is 0%, so the description must compensate. It explains jurisdiction, idempotency_key, and the signed_transaction/verify pair, but leaves wallet_address, order_id, venue, ip, caller_id, and acknowledge_tier_b unexplained. For a 10-parameter tool, this is insufficient even if the complex parameters are 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 'Cancel a resting perp order on its venue (non-custodial)' clearly specifies the action, resource, and scope. It distinguishes from sibling tools like perp_close (closing positions) and perp_modify (modifying orders), with 'resting order' making the target 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 canceling a resting perp order but does not explicitly state when to use this tool versus alternatives or provide exclusions. References to 'see place_perp_order' give related context but do not function as direct guidance for tool selection.
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, ENG-bfeacb2c).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by noting it's a FREE read, never exposes claim-code secret, and details output fields including live countdown. Consistent with readOnlyHint, idempotentHint.
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?
Concise two-paragraph format with key info front-loaded. Slightly cryptic first line ('FREE read, ENG-bfeacb2c') 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?
Adequately covers output schema fields and usage constraints for a read operation. No mention of error/edge cases, but output schema provides 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?
Despite 0% schema coverage, description explains claim_id, recipient, and sender_wallet usage. However, it omits caller_id parameter, leaving its purpose unclear.
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 it checks claim status of a social send, distinguishing it from sibling 'claim_status' and 'get_social_sends' by specifying lookup methods and output details.
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?
Describes when to use (to check claim status via claim_id or recipient) and optional scoping by sender_wallet, but does not explicitly mention when not to use or contrast with alternatives.
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 | ||
Tool Definition Quality
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.
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, MB#13669). Free to clone.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| template_id | Yes | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals side effects: attribution, fee share (15% of tech fee), and cost (free). It clarifies the output is a template, not a deployed strategy. This adds value beyond annotations, which only indicate mutation possibility.
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 concise sentences, front-loaded with purpose, then return value, then fee details. 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?
The description covers purpose, attribution, and output usage. However, it lacks parameter explanations, which are critical for correct invocation. Given the output schema exists, return value explanation is less necessary, but parameter semantics are still 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 does not explain any of the three parameters (caller_id, template_id, wallet_address). With 0% schema description coverage, the burden falls on the description, which fails to provide meaning for these inputs.
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 (clone), the resource (published strategy config), and the target (to a wallet). It also mentions it records attribution, which distinguishes it from related tools like strategy creation or copying.
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 tells what to do with the output (use strategy create tools), but does not provide explicit when-to-use vs alternatives or when-not-to-use. Given many strategy-related siblings, more guidance would be helpful.
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 (ENG-27ae391a, gap RAILS-4): closes are geo-gated too --
see place_perp_order.
idempotency_key (ENG-ac7961aa, 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 (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations marking destruction, description adds essential operational details: unsigned tx return, idempotency replay semantics, geo-gating, and Crank relay/verification. These details are not discoverable from annotations or schema and significantly enhance agent understanding.
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 dense sentences each carry necessary technical context with no filler. The description is front-loaded with the main purpose and then systematically explains special parameters and workflows using reference IDs.
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 core semantics, return type, two-phase workflow, idempotency, and jurisdiction. It leaves a few infrastructure parameters unexplained and does not explicitly compare to overlapping sibling perp_close, but the complexity is substantial and most critical operational context is present.
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 compensates by defining position_id as venue-native, close_pct range (0,100], plus jurisdiction, idempotency_key, signed_transaction, and verify semantics. However, several parameters (wallet_address, venue, pay_in_crank, payment_header, acknowledge_tier_b) remain undocumented, leaving some 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?
Opening sentence 'Close a perp position (full/partial) on its venue (non-custodial)' clearly identifies verb, resource, and scope. It distinguishes from open/modify tools but does not address sibling 'perp_close' which appears to overlap.
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 gives concrete context for two-phase execution via signed_transaction/verify, jurisdiction gating, and idempotency key behavior. It references 'see place_perp_order' for recurring patterns, but does not provide explicit when-not-to-use guidance or alternative selection.
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 | ||
Tool Definition Quality
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.
crank_dependency_statusARead-onlyIdempotentInspect
Protocol dependency compatibility matrix — are we compatible right now?
Read-only. Returns per-protocol RED/AMBER/GREEN status (drift, jupiter, kamino, marginfi, marinade, sanctum, raydium), our SDK pin vs latest, last health-probe result, on-chain program slot, next recommended action, and any auto-filed Engaij ticket — plus an overall headline. Maintained by the backend dependency response engine; callable from the morning briefing, dispatch, or ad-hoc.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. The description adds context beyond annotations by specifying that the tool is maintained by the backend dependency response engine and detailing the return fields (RED/AMBER/GREEN, etc.), with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the tool's purpose, and efficiently lists the return components without 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 has an output schema, the description adequately summarizes the return content. It also mentions maintenance and usage context, making it complete for a tool with one optional parameter and rich annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one optional parameter (caller_id) with 0% schema description coverage. The tool description does not explain this parameter or its purpose, so it fails 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 clearly states the tool returns a protocol dependency compatibility matrix with per-protocol status (RED/AMBER/GREEN) and details like SDK pin, health probe, etc. It uses a specific verb 'returns' and defines the resource, distinguishing it from siblings like crank_prompt_health.
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 stating it can be called from the morning briefing, dispatch, or ad-hoc. However, it does not explicitly say when not to use it or compare with alternatives, which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crank_prompt_healthARead-onlyIdempotentInspect
Dev Process Health — recurring CC friction this week vs resolved.
Read-only. Returns the latest weekly close-report review snapshot
(ENG-dc453c0d): a Prompt health: N recurring issues, M resolved this week
headline plus per-issue week-over-week trend (trending_down_after_fix)
for a dashboard widget. Surfaced in the Monday morning briefing under "Dev
Process Health". available=False until the first weekly review runs.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that the tool returns trend data per issue and that 'available=False' until the first weekly review runs, 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 reasonably concise with 4-5 sentences, front-loading the purpose. It includes a snapshot ID and context, which is useful but slightly verbose. It could be more succinct 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 tool has an output schema and is read-only, the description sufficiently explains the return format (headline + per-issue trend) and availability condition. It covers the necessary context for an agent to decide when to call 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?
The schema has one optional parameter 'caller_id' with 0% schema description coverage, but the description does not explain its purpose or usage. The description fails to add meaning for the parameter, which is critical 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 clearly states 'Dev Process Health — recurring CC friction this week vs resolved' and specifies it returns a weekly close-report review snapshot with a headline and per-issue trend. It distinguishes from many sibling tools focused on other health metrics like 'crank_dependency_status' or 'get_venue_health'.
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 notes it is read-only and surfaced in the Monday morning briefing, suggesting a specific use context. However, it does not explicitly state when to avoid using it or offer 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.
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 | ||
Tool Definition Quality
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 (ENG-8f3fb6d6, follow-up to ENG-254cf6b4/ENG-5a051af4):
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 (ENG-185ad857, gap RAILS-3): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond annotations: 'This tool never signs and never sees a key' and 'NOTHING executes until user approval.' It also instructs to 'report ONLY the persisted on-chain state (CONFIRMED before any success claim),' preventing premature success reporting. These safety-critical details are consistent with the mutation/destructive annotations and significantly aid correct invocation.
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 behavior is front-loaded in the first sentence, and the description uses clear section headers (Lane 1, FEE PARITY, GEO GATE). Yet it contains verbose internal engineering references (ENG-8f3fb6d6, follow-up to ENG-254cf6b4/ENG-5a051af4) and lengthy justification for exposing pay_in_crank that could be condensed 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 full lifecycle: proposal creation, approval URL, polling get_intent_status, and confirmation state. It comprehensively addresses fee parity and regulatory geo-gating, which are essential for this complex tool. Since an output schema exists, it doesn't need to detail the full return structure, though it could mention more parameter edge cases or error handling.
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, and it does for critical parameters: 'amount is in input-token base units,' pay_in_crank's fee-discount role is explained, and jurisdiction/ip are detailed for geo-gating. However, it leaves several parameters (e.g., slippage_bps, allow_unverified, idempotency_key) unexplained, so the compensation is 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 opens with 'Create a propose-only execution intent; returns an approval URL to hand to the user,' clearly stating the tool's action and output. It further distinguishes itself from direct-swap siblings like jupiter_swap by emphasizing the propose-only, non-custodial nature.
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 identifies this as 'Lane 1 (non-custodial default)' and explains that 'NOTHING executes until the user opens the approval URL... signs with their own wallet,' providing clear context for when to use this tool over an immediate-execution swap. It also references jupiter_swap and trade_equity for shared geo-gating and fee-parity controls. However, it does not explicitly state an alternative like 'use jupiter_swap when direct execution is required.'
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 (ENG-27ae391a).
Gap RAILS-4 (ENG-23f0e18a): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with annotations already providing idempotency and non-destructiveness hints, the description adds crucial context: the declaration is remembered for 90 days, overwrites prior values, is self-declared (never advice), and changes the DENIED reason. It also clarifies that it's a write operation, consistent with readOnlyHint=false, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively long but front-loaded with the core purpose. Every sentence adds value, though the internal gap reference (RAILS-4) and detailed regulatory framing add density. It earns its length for the complexity, but could be slightly 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?
Context is rich: why the tool exists, when it's needed, how it behaves over time, regulatory limitations, and the alternative path. With an output schema present, return values are covered elsewhere. The description is complete for a tool of 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 description coverage is 0%, so the description must compensate. It thoroughly explains the key jurisdiction parameter (ISO-3166-1 alpha-2, examples, self-declaration), but leaves wallet_address, ip, and caller_id to be inferred. Given the critical parameter is well covered, this is strong, though not perfect.
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: 'Declare your wallet's jurisdiction for geo-gated trading.' It clearly identifies the tool's function and distinguishes it from siblings by referencing the alternative jurisdiction= param on trade_equity, making 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?
Explicitly states when to use this tool vs alternatives: 'Call this ONCE (or pass jurisdiction= directly on any perps/short/leverage/trade_equity tool).' It also gives exclusions, noting that a US-person declaration does not unblock US-restricted venues, and explains the fail-safe rule this tool addresses.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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_strategiesBRead-onlyIdempotentInspect
Browse published strategies (read-only, free). Crypto-only (MB#13761).
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).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | clones | |
| limit | No | ||
| caller_id | No | ||
| strategy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds 'free' and 'crypto-only' constraints, but does not elaborate on other behaviors like pagination or rate 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?
Two concise sentences, front-loaded with purpose and constraints, efficient use of space.
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, but description lacks details on limit and caller_id parameters. Assumes knowledge of 16 Crank types. Overall adequate for a browsing tool but with 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 description must compensate. It explains strategy_type filters to 16 types and sort options with valid values, but does not describe limit or caller_id 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 'Browse published strategies' with verb and resource, and adds constraints 'read-only, free, crypto-only'. However, it does not explicitly distinguish from sibling tools like strategy_list or get_leaderboard.
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. Does not mention when not to use it or compare with related tools.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 (ENG-fc290438/ENG-00ebde90, MB#18215) 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral traits beyond annotations: amounts are in base units, returns specific fields (expected output, price impact, etc.), and venue_hint is advisory. 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 three sentences, front-loading 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 annotations and output schema, the description covers key aspects (read-only nature, parameter semantics, return fields) and references the execution sibling. Lacks full parameter documentation but 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?
With 0% schema coverage, the description explains amount and venue_hint but leaves side, symbol, caller_id, and slippage_bps undocumented. Partial compensation but insufficient for 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 clearly states 'Read-only Jupiter quote for a tokenized-equity trade (no execution).' This provides a specific verb (quote), resource (tokenized-equity), and scope (read-only/no execution), distinguishing it from sibling tools like trade_equity.
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 that the tool is for quotes only and directs to trade_equity for execution, providing usage context. However, it could more explicitly state 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.
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 (ENG-7ded4fb8, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds critical behavioral details beyond annotations: returns an unsigned base64 tx that reverts unless repaid, authenticity verification, idempotency key replay behavior, and destructive nature (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?
The description is reasonably concise with key points front-loaded. The idempotency_key detail could be integrated more smoothly, but overall it's well-structured and not 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 explains the return type, flow, and key behaviors; given the output schema exists, return details are not needed. It covers atomicity, authentication, and retry behavior, but could mention prerequisites like wallet funding.
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?
While schema coverage is 0%, the description explains idempotency_key, allow_unverified, and instructions. However, it omits caller_id, pay_in_crank, payment_header, and basic parameters like token and amount are only implied, 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 'Marginfi flash loan for arbitrage (non-custodial, atomic)' with a specific verb and resource, distinguishing it from other lending or swap 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 description provides context for use (arbitrage) and mentions conditions like allow_unverified and daily free tier with payment_header, but does not explicitly state when not to use this tool or compare to alternatives like lend_borrow.
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 (ENG-7ded4fb8, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the non-custodial nature, direct settlement to wallet_address, and the fee structure (charged on amount_usd notional past daily free tier). It also details idempotency_key behavior. Annotations indicate destructiveHint true, which is consistent. No contradiction found except a minor nuance with idempotentHint.
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 three paragraphs: main purpose and return values, details on flow and fees, and idempotency_key behavior. It is front-loaded with the essential information. Could be slightly more concise, but it's clear and specific.
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 8 parameters and an output schema, the description covers the main flow and key parameters but omits details on caller_id and pay_in_crank. It does not explain error handling, rate limits, or prerequisites (e.g., wallet existence). Given the tool's complexity and the availability of annotations, it is somewhat 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?
The description adds meaning beyond the schema for idempotency_key (explains replay behavior) and payment_method (lists enum values not in schema). Other parameters like wallet_address and amount_usd are implicit. However, caller_id, pay_in_crank, and payment_header are not described, leaving gaps despite schema coverage being 0%. The description compensates partially.
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: 'Fund a wallet with fiat via MoonPay (card/bank/Apple Pay -> USDC).' It specifies the flow (returns checkout_url and session_id), the asset (USDC), and the payment methods. This distinguishes it from siblings like offramp_to_fiat.
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 tool's output (checkout_url, session_id) and how to use them ('poll with get_onramp_status'). It implies the use case of onramping fiat to USDC, contrasting with offramp. While it does not explicitly list when not to use or 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.
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 | ||
Tool Definition Quality
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.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds 'Read-only' which aligns. It also discloses the return content (health records with specific fields) and the purpose for routing decisions. No contradictions with annotations. Additional details about authentication or rate limits are not needed given the safe nature.
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 (three sentences) and front-loaded with the core purpose. The second sentence lists return fields, but the third sentence repeats the purpose slightly. No significant fluff, but could be more streamlined by merging the first and third sentences.
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 provides a useful summary of the key data fields and the decision-making context. It does not need to detail return format, but it could explain how the composite safety score is derived or how to interpret the data. Still, for a dashboard overview, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning no explanations in the schema. The description does not mention the single optional parameter 'caller_id' at all, leaving the agent to guess its purpose. While the parameter has a default and is likely optional context, the lack of any guidance reduces clarity.
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 dashboard overview of all configured venues for routing decisions, specifying it returns one health record per active venue with fields like status, deploy slot, TVL, 24h volume, and composite safety score. This distinguishes it from sibling tools like get_venue_status which likely focus on single venues.
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 says 'so an agent can pick a venue in a single call', indicating the primary use case for venue selection. However, it does not explicitly state when not to use this tool or mention alternative tools for specific venue details, though the context of sibling tools implies such differentiation.
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 | ||
Tool Definition Quality
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.
Workflow: ORIENT step -- the starting read for any flow. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering safety and idempotency. The description adds no further behavioral traits, but it is consistent and provides minimal extra value 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 short sentences. The first defines purpose, the second provides workflow guidance. 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 simple tool (2 parameters, output schema exists), the description covers purpose and workflow context. It does not detail output structure, but the output schema handles that. Overall, it is sufficiently complete for safe and 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% (no descriptions in schema). The description only implicitly explains 'wallet_address' via the tool's purpose, but it does not mention 'caller_id' at all. This leaves the agent without full parameter meaning, failing to 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 tool retrieves wallet token balances for SOL and all SPL tokens with USD valuations. It explicitly calls out the resource (wallet token balances) and the specific scope (SOL + SPL), making it distinct 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?
The description provides explicit guidance: 'Workflow: ORIENT step -- the starting read for any flow. See get_trading_workflow.' This tells the agent when to use this tool (as an initial orientation step) and points to an alternative for trading workflows.
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, non-suppressed/non-expired insights are ever returned. Each insight carries n (contributing agents, DP- released), effect_size, a confidence interval, epsilon_spent (privacy metadata -- weigh a high-epsilon insight more cautiously), crowding_index, and staleness (age vs half-life). detail=concise adds a rendered human-readable statement; detail=full adds the raw statement_template/params/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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior, but the description adds substantial behavioral context: only active/non-suppressed/non-expired insights are returned, the meaning of epsilon_spent (weigh high-epsilon insights cautiously), staleness interpretation, and a clear disclaimer that responses are descriptive only. This goes well beyond the annotation hints, providing genuine transparency about data filtering and interpretation.
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: a one-line summary, then filters, then return-field semantics, then a workflow note. Every sentence adds value—no fluff or repetition. It is front-loaded with the core purpose and uses paragraphs to separate concerns, 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 analytical complexity, the description covers all essential aspects: filters, data fields, privacy metadata caveats, staleness, and workflow integration. With an output schema present, the return structure is already documented, so the description need not explain every field. It compensates for the empty schema descriptions and provides enough context for an agent to select and invoke this tool appropriately.
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 documentation burden. It explains asset (mint/symbol), strategy_type, insight_type (with an explicit list of allowed values), and detail (concise vs full modes with what each adds). The only unmeasured parameter is caller_id, which is not described. This is a strong compensation but not complete, hence a 4.
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 summary: 'Fleet-wide collective insights, historical performance data (free read).' It clearly identifies the tool's function (retrieving collective insights) and scope (fleet-wide, aggregated across the Crank agent fleet), distinguishing it from sibling tools like get_market_briefing or get_consensus. The explicit mention of 'historical performance data' and 'descriptive only' further clarifies its 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 'Workflow: INTELLIGENCE step' line provides clear guidance on when to use this tool—alongside get_market_briefing and get_consensus before sizing or creating strategies. It also warns that insights are 'never a recommendation or a promise of results.' However, it does not explicitly state when NOT to use this tool or how it compares to alternatives, so it falls 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.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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, ENG-95f335be).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, idempotent, and non-destructive. The description adds valuable context: explains sybil_flagged + penalty_bps, score accrual from on-platform activity, and circular funding detection. 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?
Description is well-structured with a clear purpose sentence followed by detailed return fields and behavioral notes. Slightly longer than necessary but remains focused and informative.
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) and comprehensive annotations, the description covers all necessary context: return structure, sybil penalty, score accrual mechanism, and the free read nature. Sufficient for correct tool 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 has 0% description coverage for parameters. The description does not explain caller_id or wallet_address beyond their existence. It only implies that wallet_address is the input, leaving agents to infer the meaning of the optional caller_id 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 states the tool returns a wallet's Crank Score reputation breakdown, including specific components like total_score, per-activity components, sybil_flagged, and gates. It distinguishes from sibling tools by focusing on the 'Crank' score variant.
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 other score tools like get_score or get_score_leaderboard. The phrase 'FREE read' implies it's safe to call, but no when-to-use or alternative recommendations.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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
k-anonymous emergent fleet behaviour motifs (free read).
Returns ordered behaviour motifs -- sequences of (regime, signal_key, action, outcome_sign) steps -- that at least 10 DISTINCT agent cohorts exhibited and that map to NO existing strategy type in the standing taxonomy. Each carries n_agents, a differentially-private aggregate effect_size with a confidence interval, epsilon_spent, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false), the description adds meaningful behavioral context: 'k-anonymous', 'No wallet address or cohort key is ever returned', 'differentially-private aggregate effect_size', and 'never a recommendation or a promise of results.' It also discloses the limit cap (max 100) and the minimum cohort threshold (10), giving the agent a solid understanding of what to expect.
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 definition, followed by details on output fields, parameters, privacy, and workflow. Every sentence adds value—no filler or repetition. It is slightly long but appropriately so for a tool with these nuances, and the structure makes 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 moderate complexity, this description is thorough. It covers what the tool returns, the anonymity guarantee, differential privacy, output fields (n_agents, effect_size, confidence interval, epsilon_spent, staleness), parameter filtering, the workflow context, and a disclaimer. The presence of an output schema means return values don't need to be fully restated, but the description enriches the schema by explaining the semantics of the motifs and the 'no existing strategy type' condition.
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 explain the two main parameters: 'Filter with min_agents; limit caps the result count (max 100).' However, caller_id is not mentioned at all, leaving its purpose unclear. Since two of three parameters are meaningfully described and the omitted one has a default empty string, the compensation is strong but incomplete, warranting a 4.
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 has a specific verb ('Returns') and resource ('ordered behaviour motifs'), with a precise definition: sequences of (regime, signal_key, action, outcome_sign) steps that at least 10 DISTINCT agent cohorts exhibited and map to NO existing strategy type. This clearly distinguishes it from sibling tools like get_collective_insights or get_strategy_suggestions by emphasizing 'emerging' patterns not in the taxonomy.
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 when-to-use context via 'Workflow: INTELLIGENCE step -- see what the fleet is doing that no existing strategy type describes, before designing a new strategy.' It also warns it is 'descriptive only, never a recommendation,' which prevents misuse. However, it does not explicitly name alternatives or state when not to use it, so it 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.
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 | ||
Tool Definition Quality
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).
Andrew's decision (MB#20076, ENG-5de0ede9): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds substantial context: it explains what constitutes a valid transaction (executed trades only), that counts are aggregate and no per-wallet data, and that the metric is informational. It also details the cluster parameter behavior. This goes beyond annotation 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 verbose and includes extensive background (Andrew's decision, transaction definitions, caveats). While informative, it could be more concise. Each sentence adds value, but the length may reduce quick readability.
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 the tool's logic and the presence of an output schema, the description covers the key aspects: purpose, condition, metric definitions, and constraints. It explains what is not counted and warns about the informal nature. Minor gaps in parameter descriptions prevent a 5.
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 only mentions 'cluster=devnet' in passing, leaving the 'caller_id' parameter completely unexplained. Neither parameter has explicit semantics, relying on default values. This is inadequate for a 2-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 that the tool returns the ILO adoption status, including whether the gate is met based on active user count. It specifies the exact condition (1000 active users with 5 executed transactions in 7 days). It distinguishes this tool from siblings by focusing on a specific readiness metric.
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 readiness before ILO proceeds, but it does not explicitly state when to use or not use this tool versus alternatives. It provides context about the decision rule but lacks direct guidance on selection among sibling tools.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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_leaderboardARead-onlyIdempotentInspect
Top published strategies ranked by a verified backtest metric (free).
Crypto-only -- equity templates excluded (MB#13761). 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).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | sharpe | |
| limit | No | ||
| caller_id | No | ||
| strategy_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe read-only behavior. Description adds meaningful context: crypto-only, no equity, no return promises (rule 8), each entry includes backtest metrics and on-chain attestation hash. 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 concise sentences with front-loaded purpose. Every sentence adds value: purpose, scope, sort options, and data contents. 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 4 optional parameters, output schema exists, and annotations cover safety, the description adequately addresses purpose, scope, sort behavior, and data integrity. Minor omission: could mention limit effect, but output schema may handle pagination.
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 interpretation for the 'sort' parameter (enumerated options and default). Other parameters (limit, caller_id, strategy_type) are not explained, leaving some 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?
Clearly identifies the tool as retrieving top published strategies ranked by a verified backtest metric, with specific crypto-only scope and equity exclusion. Distinguishes from related sibling tools like get_score_leaderboard and get_strategy_leaderboard.
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 context for when to use (ranking crypto strategies) and when not (equity templates excluded). Lists sort options and default. Does not explicitly name alternatives but the scope differentiation is implied.
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.
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 |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly, openWorld, idempotent. Description adds specifics on output fields and protocols, enhancing behavioral clarity 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?
Concise three sentences: purpose, output fields, workflow context. No fluff, front-loaded with core action.
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?
Complete for a simple query tool. Annotations cover safety, output schema exists, description adds protocols and field details. No 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?
Only optional caller_id parameter with default. Schema coverage is 0%, but description omits any parameter details. However, caller_id is trivial and not required, so minimal impact.
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 verb 'Compare' and resource 'supply/borrow rates across Kamino + Marginfi'. Lists output fields and differentiates from siblings like get_lst_yields and get_trading_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?
Identifies as YIELDS step for idle/low-conviction capital, pairs with get_lst_yields, and refers to get_trading_workflow. Provides clear context for when to use.
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 | ||
Tool Definition Quality
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.
Workflow: INTELLIGENCE step (usually first) -- macro/sentiment context that frames detect_regime + the allocation. See get_trading_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | ||
| caller_id | No | ||
| timeframe | No | 24h | |
| detail_level | No | free | |
| payment_header | No | ||
| wallet_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, open-world, non-destructive. The description adds significant behavioral details: source aggregation, tiered pricing with specific costs, required authentication for paid tiers, billing outcome field, and the disclaimer 'Not financial advice.' 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 starts with a clear purpose, then explains parameters and workflow. It is well-structured but slightly verbose in billing details (e.g., 'metered at $0, quota'd per day') which could be condensed. Overall, every sentence contributes, but some redundancy exists.
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 (tiered pricing, paid vs free, workflow integration) and the presence of annotations and output schema, the description is complete. It covers usage context, parameter semantics, behavioral traits, and return value highlights (billing field). No major 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 explains 'assets' as optional tickers and 'detail_level' with values 'free', 'pro', 'platinum' including costs and personalization. It mentions 'payment_header' and 'wallet_address' for paid tiers but does not detail 'caller_id' or 'timeframe'. While valuable, some parameter meanings remain implicit.
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 a 'market briefing aggregated from free crypto data sources' with specific components (summary, top movers, sentiment, Fear & Greed). It distinguishes itself from sibling tools that are more narrowly focused (e.g., get_market_regime, get_signals) or financial data like equity_quote. The verb 'get' + resource 'market briefing' 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 workflow guidance: 'INTELLIGENCE step (usually first) -- macro/sentiment context that frames detect_regime + the allocation.' It also explains paid tiers require subscription or payment_header. However, it does not explicitly state when not to use it or list alternative tools for similar purposes, though the sibling set is large.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 = marginal_uplift (how much your journaled
decisions tightened the fleet's collective estimates) x outcome_quality
(how well your stated expectations matched on-chain-verified outcomes)
x novelty (how much your contributions differ from everything else in
the pool -- copies score near zero). 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive, and the description adds crucial context: the exact composite formula (marginal_uplift × outcome_quality × novelty), the meaning of 'flags' for zero scores, and a legal/behavioral disclaimer that any rewards are discretionary and not a promise. This goes well 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 somewhat long but every sentence adds meaningful information: scope, defaults, formula, caveats, and workflow. It is well structured with a clear opening purpose, bullet-like clarifications, and a concise final workflow note. 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?
Given the output schema exists and annotations cover safety, the description provides all necessary context: scope, parameter format, formula, flags, disclaimers, and a link to a sibling tool for deeper review. It is fully sufficient for an agent to select and invoke 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: it explains 'epoch' as 'YYYY-MM' with a default of the most recently completed month, and clarifies that wallet_address scopes the result. However, 'caller_id' is not explained at all, leaving a minor gap in an otherwise thorough treatment.
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 the caller's own hive contribution score for a monthly epoch, and explicitly distinguishes it from other wallet scores or fleet rankings ('never another wallet's score and never a fleet ranking'). This specificity differentiates it from sibling tools like get_leaderboard or get_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?
Provides explicit guidance on when to use: as a REVIEW step 'read alongside get_my_performance'. It also clarifies the tool is wallet-scoped, implying leaderboard tools are for comparisons. This gives clear context and references alternatives without ambiguity.
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 | ||
Tool Definition Quality
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_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 | ||
Tool Definition Quality
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 (ENG-8c57afc3).
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 (ENG-574a0e66/ENG-d7bc9d28): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, the description adds valuable behavioral context beyond those hints. It explains that SKIPPED_BUDGET and SKIPPED_SPEND_CAP rows are included 'so a skipped wake is exactly as visible as a completed one, never silent' — this discloses a non-obvious behavior that matters for interpreting results. It also exposes kill-threshold configuration and kill_switched_at/kill_reason so a wallet can understand why wakes stopped, which is critical context with no annotation equivalent.
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 title, a clear field list with narrative explanation, and a short workflow sentence. It is dense with information but every sentence earns its place — no filler, no repetition of schema defaults, and the use of bullet-like formatting and line breaks improves scannability.
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 need not explain return values; it still explains the semantics of the key returned fields (e.g., SKIPPED_BUDGET rows, kill_threshold_enabled) and why they matter. The description entirely compensates for the 0% schema coverage by embedding domain logic (e.g., 'a skipped wake is exactly as visible as a completed one, never silent') and covers the full workflow context. This is more than adequate for a read-only status tool with rich 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 description coverage is 0%, so the description carries the burden. It names the main output fields and connects them to the tool's purpose, which helps an agent infer that wallet_address is the sole required input and recent_limit controls visibility of recent wakes. However, it doesn't explicitly document caller_id or recent_limit semantics beyond defaults in the schema; still, the description's detailed return-field list gives enough context to understand the parameters' roles without repeating 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 begins with a specific, descriptive title ('Wake-on-condition consent + usage status') and immediately names the core resource and operation: it returns consent, usage counters, and kill-threshold state for a wallet. It also names the exact fields returned, making the tool's purpose unambiguous and distinct from siblings like get_health_factor or set_ooda_consent.
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 final paragraph explicitly states the workflow: 'status/observe step -- check this to see whether the background worker is watching, and what it did (or skipped) recently.' This clearly indicates when to use the tool (observation of wake-on-condition status) and implicitly distinguishes it from mutation tools like set_ooda_consent or kill_wallet. It also references engineering task IDs for traceability, which helps an agent understand the context without adding noise.
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 instead of forgotten between calls (competitors return raw JSON per call and forget everything). 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations, including session-loaded caching ('loaded once per session'), output restrictions ('Descriptive framing only... never return targets, hard rules'), and the edge case behavior when no charter exists. These details substantially enrich the annotation-only safety 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 front-loaded with the core read operation and is densely informative. However, the competitive comparison ('competitors return raw JSON per call and forget everything') is slightly extraneous, though it does illustrate the session-loaded behavior. Overall, 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?
The description is highly complete for a read tool: it provides workflow placement, conditional behavior for missing charters, output framing constraints, and relationship to related tools. The presence of an output schema means return values need not be detailed, and the description covers the operational context 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 description coverage is 0%, and the description does not explicitly explain the parameters. wallet_address is inferable from the tool's purpose, but caller_id is completely unexplained. The description fails to compensate for the lack of schema-level 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 identifies the tool as reading the wallet's active portfolio charter, explains the document's contents, and distinguishes it from siblings like set_portfolio_charter. It also explicitly positions it before related read tools like get_balances and portfolio_snapshot, making its 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?
Usage guidance is explicit: 'Workflow: ORIENT step 0 -- read this FIRST' and it names alternative/companion tools. It also instructs to call set_portfolio_charter when has_charter is False, providing a clear when-to-use and when-not-to-use directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_questsARead-onlyIdempotentInspect
Live Crank Score quests + a wallet's progress (FREE read, ENG-b0150c40).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, non-destructive. Description adds meaningful context: time-bounded nature, field details, disclaimer presence, and progress 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?
Relatively concise, front-loaded with core purpose. Could be slightly more structured but still 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?
Covers essential details given simple nature, annotations, and presence of output schema. Mentions disclaimer, which is helpful.
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?
Adds meaning for wallet_address (progress when provided) but not for caller_id. Schema description coverage is 0%, so description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns live quests and optional wallet progress. It specifies the nature (time-bounded, admin-configured campaigns) and details the fields, distinguishing it from other 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?
Indicates it's a FREE read operation and progress is available when wallet_address is provided. However, no explicit when-to-use vs alternatives or exclusions.
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 (ENG-fc290438/ENG-00ebde90, MB#18215)
is ADVISORY, never required -- see jupiter_swap.
Pass wallet_address (optional, ENG-5a051af4) 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds valuable context beyond that: 'This stays a free read either way' (cost behavior), 'venue_hint is ADVISORY, never required' (optionality), and what the call returns (routes, price impact, fees, estimated output). It also discloses the fee-discount calculation logic 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 front-loaded with the core purpose and organized into clear sections, with every sentence adding substantive information. The embedded ticket references (ENG-fc290438/ENG-00ebde90, MB#18215, ENG-5a051af4) add traceability but create minor noise, keeping it from a perfect score.
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 8-parameter complexity, the description covers purpose, safety (free read), key parameter semantics, and fee behavior, and an output schema exists so return values need not be fully explained. Minor gaps remain: slippage_bps and caller_id have no documented meaning, but the description handles the most complex behaviors well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining amount ('in base units of input_token'), venue_hint ('ADVISORY, never required'), wallet_address (fee discount preview), and pay_in_crank (part of discount logic). However, it leaves caller_id and slippage_bps entirely unexplained, and input_token/output_token are only implicitly covered by 'token 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 opens with 'Read-only Jupiter quote for a token pair (no execution)', using a specific verb and resource while explicitly excluding execution. It distinguishes itself from the sibling jupiter_swap by pointing to it for venue_hint semantics, clearly differentiating the quote-only tool from the execution 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 explicitly states 'no execution' (when not to use it) and references the alternative tool with 'see jupiter_swap'. It also provides parameter-level guidance: pass wallet_address to preview the discounted fee versus omitting it for the base rate, giving clear context for when each option is appropriate.
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, ENG-43ba5e83).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds valuable behavioral details: it is a free read from a scheduled daily scan, LLM-classified, results ranked by relevance then recency, and includes disclaimers ('not legal advice', 'not financial advice'). 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 comprehensive yet concise, with a clear structure: purpose, output format, parameter details, and workflow context. Every sentence adds value, 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?
Given the tool has 4 parameters, zero required, and an output schema exists, the description fully covers the tool's behavior, output fields, filtering options, and usage context. It leaves no significant 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 has 0% description coverage, so the description must compensate. It fully explains all parameters: 'window_hours' bounds lookback (default 168, capped at 720), 'min_relevance' filters by floor (high/medium/low), 'agency' narrows to one body (SEC, CFTC, FinCEN). It also describes output fields that correspond to parameter effects.
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 regulatory statements from SEC/CFTC/FinCEN relevant to Crank's scope, with a specific verb ('get') and resource ('regulatory updates'). It distinguishes from siblings like 'get_technology_updates' by specifying the regulatory 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 explicitly recommends using this tool in an 'INTELLIGENCE / COMPLIANCE step' to 'check the current regulatory posture... before acting on a strategy', providing clear context. It does not explicitly state when not to use it or list alternatives, but the usage guidance is strong.
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 | ||
Tool Definition Quality
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, ENG-b0150c40).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, non-destructive. Description adds valuable context: returns specific metrics, notes points only from costly actions (anti-farm), and includes a disclaimer about future token distribution. 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?
Description is dense but well-structured: lead sentence summarizes core purpose, followed by details on returned fields and disclaimers. Every sentence adds value, no 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 (multiple return fields), rich annotations, and presence of an output schema, the description covers all necessary aspects: return values, scoring source, and a legal disclaimer. No 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%. Description mentions 'wallet_address' in context but does not explain 'caller_id' or provide parameter-level details. With no schema descriptions, the description fails to compensate, leaving parameter meaning 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?
Description clearly states the tool returns a 'User-facing Crank Score' with rank, multiplier, metrics, and quests. It differentiates itself from 'get_crank_score' as a campaign-layer view, making the purpose specific and distinct 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?
Description implies usage as a higher-level view over get_crank_score, mentioning the alternative tool. It lacks explicit when-not-to-use or prerequisites, but the context is clear enough for an agent to infer appropriate use.
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, ENG-b0150c40).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the description adds value with 'FREE read' and the cap behavior on limit. It does not discuss authorization or rate limits, but annotations cover safety. The behavioral disclosure is solid 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 details on limit behavior, response fields, and a parenthetical sibling differentiation. 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 presence of an output schema (not shown) and rich annotations, the description covers the essential output structure and key behavioral constraints. It lacks mention of error cases or empty results, but for a simple read-only tool this 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?
With 0% schema description coverage, the description must explain parameters. It explains that limit caps at admin-configured leaderboard_size, adding meaning. However, caller_id is not described at all, leaving a gap. Partial coverage 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 states the tool returns a 'Top-N Crank Score leaderboard' ranked descending by total_score, and specifies the content of each entry (rank, wallet_address, total_score, components, etc.) and overall response fields. It explicitly distinguishes from the sibling tool get_leaderboard, which ranks strategy templates.
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 indicates it's a 'FREE read' and that limit caps at admin-configured leaderboard_size. It differentiates from get_leaderboard, but does not provide guidance on when to use this tool versus other scoring-related siblings like get_crank_score, get_score, or get_strategy_leaderboard.
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 (DP-released), 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant context beyond the annotations: it notes the tool is a 'free read' (no cost), mentions DP-released counts, staleness, and explicitly disclaims recommendations. These details enrich the read-only/idempotent hints 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 well-organized in sections: purpose, filters, returns, caveat, and workflow. It is somewhat long but every sentence adds value, and the main purpose 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 and existing output schema, the description is highly complete. It covers workflow usage, data aggregation nature, privacy caveats, and return fields, leaving no significant gaps for an agent to select 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. It provides a window enum (24h|7d|30d|90d|all) and source_type examples (youtube/rss/api/on_chain), but signal_type and caller_id are left unexplained. This is partial compensation, 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 identifies the resource as 'fleet action-conditioned signal effectiveness' and specifies exactly what is returned (effect_size, confidence interval, DP-released count, crowding_index, staleness). It distinguishes itself from sibling tools by positioning it as a fleet-level aggregate alongside personal track-record tools like get_source_accuracy and get_my_performance.
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 context ('INTELLIGENCE step') and names complementary tools. It also states a clear usage boundary: 'descriptive only, never a recommendation or a promise of results.' However, it does not fully enumerate when-not-to-use scenarios or direct alternatives for exclusion cases.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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; ENG-bfb7ace4).
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 k-anonymous 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, openWorld, idempotent, non-destructive. Description adds context: 'free read', 'anti-gaming cold start' for social sources, and clarifies data is historical/descriptive. No contradictions. Could further explain output structure or rate 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?
Moderately concise but includes technical jargon ('ENG-bfb7ace4', 'Layer-2 multiplier', 'k-anonymous insights') that may reduce clarity. Front-loaded with tool identity, then details, then workflow. Could be streamlined.
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 optional param, read-only table, output schema exists), the description provides workflow context but omits explanation of the parameter and does not describe output shape or pagination. Adequate but not comprehensive.
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 single parameter 'caller_id' (optional with default) has 0% schema description coverage. The description does not mention or explain this parameter, leaving the agent without guidance on 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 identifies the tool as returning a 'Source-effectiveness weight table' with specific fields (graded evaluation counts, effectiveness weight, fleet Layer-2 multiplier, combined weighted value). It states it is historical and descriptive, not advice. However, it does not explicitly differentiate from siblings like get_source_accuracy or get_signal_effectiveness.
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 workflow guidance: 'COMPOSE step -- read alongside list_signal_catalog to pick streams with a real graded track record before authoring a definition.' Also notes it is historical/descriptive only, but does not state when to avoid or mention alternative tools.
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 M distinct cloning wallets over the trailing 30 days, differentially private, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses that this is a free read, historical data only, never a recommendation, and that insufficient history returns available=false with a reason. These are behavioral nuances not captured by 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 a compact summary, then elaborating on payload and constraints, and ending with a clear workflow. Every sentence adds value, and the length 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?
Given the tool's complexity (approval trail, privacy, governance path, availability reasons), the description covers the essential domain rules and workflow. The output schema handles return-value details, so the description appropriately focuses on behavior and 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?
The input schema has 3 parameters (limit, caller_id, strategy_type) with 0% description coverage, and the tool description does not explain any of them. The agent has no guidance on what values to pass for strategy_type or how caller_id affects results, so the description fails to compensate for the schema 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 states the tool returns clone-marketplace live performance deltas and approvals, with a specific payload definition (average P&L in bps, trailing 30 days, differential privacy, self-clones excluded). It clearly distinguishes itself from siblings like clone_strategy by focusing on observed history for 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 explicitly says to use this as an INTELLIGENCE step to compare marketplace templates before cloning via clone_strategy, and names the alternative. It also states exclusions (draft proposals, insufficient history) and the meaning of available=false, 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.
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 with fewer than 25 contributing cohorts (the k-anonymity granular floor) 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent. Description adds critical details: anonymization (never identifies wallet/cohort), k-anonymity floor of 25, and that it drops small cohorts. 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?
Well-organized into paragraphs with clear front-loading. However, some redundancy ('never a recommendation or a promise of results' appears twice) could be trimmed.
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, usage context, behavioral guarantees, and workflow integration. With an output schema present, the description is sufficiently complete for a simple read 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 coverage is 0%, so description must compensate. It only partially covers 'window' by listing valid values. 'caller_id' and 'strategy_type' are not explained. Failure to 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?
Clearly defines the tool as an anonymized strategy-parameter leaderboard, explicitly distinguishing it from other leaderboard tools (e.g., get_leaderboard) by its focus on param_performance and anonymization.
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 workflow guidance: 'INTELLIGENCE step' for comparing fleet outcomes before using suggest_parameter_adjustment. Also warns it is descriptive only, never a recommendation.
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 | ||
Tool Definition Quality
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_support_dashboardARead-onlyIdempotentInspect
Support desk metrics: open count, avg response/resolution time, breakdowns.
Read-only. Returns totals, open/resolved/unassigned counts, resolution rate, avg first-response + resolution seconds, by-status/category/priority maps, and a 14-day created-ticket trend. Mirrors the backoffice dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description reinforces a read-only behavior and adds details on the specific metrics returned. No contradictions; the description adds value beyond annotations by listing exact fields like resolution rate, trend data, etc.
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, clear and front-loaded with purpose. It could be slightly more concise by merging the metrics lists, but it remains easy to read and logically 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 complexity (retrieving multiple aggregated metrics) and the presence of an output schema, the description covers the return values well. However, it omits any explanation of the input parameter, which is a minor gap. Overall complete for the tool's purpose.
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 completely undocumented in both the schema and the description. With 0% schema description coverage, the description should explain its purpose but does not. The description focuses entirely on output, ignoring input 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 states the tool returns support desk metrics (open count, avg response/resolution time, breakdowns) and lists specific outputs. It distinguishes from sibling tools like get_support_ticket or list_support_tickets by focusing on aggregated dashboard metrics.
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 a high-level support dashboard view, mirroring the backoffice. However, it does not explicitly state when to use this tool versus alternatives (e.g., for individual ticket details use get_support_ticket). The context is clear 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.
get_support_ticketARead-onlyIdempotentInspect
Full support-ticket detail with the conversation thread. Read-only.
ticket_id: numeric id or human ticket number (e.g. CRK-AB2K9P).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description reinforces 'Read-only'. It adds valuable context about returning the full conversation thread and explains the ticket_id format. 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 extremely concise—two sentences—with the main purpose stated first, followed by parameter clarification. No unnecessary words, front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema (so return values are documented), and the description covers the essential behavior (full conversation thread, read-only). Missing usage guidelines and caller_id note, but for a straightforward get tool 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?
Schema description coverage is 0%, so the description must compensate. It explains the ticket_id parameter well (numeric ID or human ticket number), but does not mention caller_id at all. Thus partial compensation for missing parameter docs.
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 a full support-ticket detail with its conversation thread, and highlights it is read-only. It distinguishes from sibling tools like list_support_tickets, assign_ticket, etc. by focusing on single ticket retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool vs alternatives. It notes it is read-only but offers no guidance on when not to use it or when to use siblings like assign_ticket or reply_to_ticket. The context from sibling names suggests its purpose, but explicit instructions are missing.
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, ENG-565c74a9).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, open-world, idempotent, non-destructive. The description adds details about scanning sources (Anthropic, OpenAI, etc.), classification (category, relevance), and output fields, enriching behavioral understanding 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 fairly long but packed with useful information. It is front-loaded with purpose and major details. Could be slightly more concise, but 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 complexity and the presence of an output schema (though not displayed), the description covers sources, classification, fields, and usage context comprehensively. It addresses the 'when to use' and 'what to expect' thoroughly.
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' (default 168, cap 720), 'min_relevance' (high/medium/low), and 'category' (optional). However, it does not explicitly map each parameter in the schema, and 'caller_id' is not mentioned. Adequate but not explicit.
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 'Recent technology / tooling developments relevant to Crank + Engaij', with specific sources and output fields. It uses a specific verb ('get') and resource ('technology updates'), distinguishing it from sibling tools like 'get_regulatory_updates'.
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 provided via 'Workflow: INTELLIGENCE step -- scan for SDK / API releases, competitor moves, or tooling worth adopting before planning integration or strategy work.' It also clarifies limitations ('triage signal, not advice'). No explicit alternatives to sibling tools are given, but the context is sufficient.
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 (ENG-b34b5493).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by explaining the fail-safe behavior for unscored/inactive/unregistered tokens and the composite risk derivation. Annotations already declare read-only, idempotent, and non-destructive; the description complements these.
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 three front-loaded sentences: purpose, classification list, fail-safe. No wasted words, though slightly more compact could be possible.
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 rich, the description is complete enough—it covers the return dimensions and edge cases. It does not explain the output structure but that is handled by the 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?
Schema description coverage is 0%, so the description partially compensates by implying the primary parameter (mint_or_symbol) in the first sentence. However, it does not describe the caller_id parameter or provide formatting details.
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 'Standardised tokenized-stock classification for a mint or symbol' and lists all classification dimensions, distinguishing it from general token info tools like token_info or verify_token.
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 vs siblings. The description does not mention alternatives or conditions for use, leaving the agent to infer from context.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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_historyBRead-onlyIdempotentInspect
Recent transactions for a wallet, parsed + human-readable (limit 1-100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 clear. The description adds value by stating the output is 'parsed + human-readable' and imposes a 'limit 1-100', providing behavioral context 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 a single concise sentence that is front-loaded with the primary action. Every word serves a purpose: 'Recent transactions' sets the scope, 'for a wallet' identifies the resource, and 'parsed + human-readable (limit 1-100)' adds key details. No wasted 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 the tool has an output schema (not shown), the description does not need to explain return values. However, it fails to document the 'caller_id' parameter, which may be important for usage. It also does not mention potential use cases or limitations. For a simple read tool, it 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?
The schema has 0% description coverage, so the description must compensate. It partially covers 'limit' by specifying the range 1-100, but 'wallet_address' and 'caller_id' are not described at all. The description does not explain what 'caller_id' is or how 'wallet_address' should be formatted.
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 recent transactions for a wallet, parsed and human-readable. It specifically mentions 'wallet' as the resource and 'transactions' as the action, making the purpose clear. However, it does not differentiate from sibling tools like get_balances or portfolio_snapshot, which could be confused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives or when not to use it. There is no mention of prerequisites, limitations, or comparison to other tools. The sibling list includes many tools but none obviously similar, yet still no usage context.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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.
go_live_statusARead-onlyIdempotentInspect
Live go-live posture + S1-S6 runbook stage readout (ENG-88a87e5d).
The single documented gated config surface (MB#20378 D2, follow-up to
ENG-b936ca31): renders the ENTIRE go-live flip state -- cluster, RPC host
(bare hostname, never an api key or query string), paper-trading + soft-
launch guards, both technology-service-fee rails (x402 + Jupiter swap fee),
MoonPay environment, and multi-venue perps posture -- read fresh from
config on every call (an admin can flip an env var and the very next call
reflects it, no redeploy needed). stages is an ordered S1-S6 readout of
the go-live runbook derived purely from that posture, each
{stage, label, satisfied, blocking} -- the primary verification
instrument for every runbook stage (verify-runtime-behaviour-not-config).
FREE read, never gated (never in x402 PAID_TOOLS): booleans/counts/hosts only, no secret ever leaves this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent hints. The description adds substantial context: it reads fresh from config on every call (no caching), never returns secrets, and is free/ungated. This goes beyond the annotations and helps the agent understand safety and freshness.
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 with internal identifiers (ENG-88a87e5d, MB#20378 D2) and technical details that do not aid tool selection or invocation. The key information is front-loaded, but the excess length and jargon hurt 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?
Given the tool's simplicity (1 optional param, read-only, output schema exists), the description provides adequate context: what data is returned (stages, posture), that it is real-time, and that it is safe to call. It does not explain the output schema in detail, but that is covered by the schema itself.
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% for the single parameter `caller_id`. The description does not explain this parameter at all, leaving the agent to guess its purpose. While the parameter is optional and likely just for logging, the description fails to add any value 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 provides 'Live go-live posture + S1-S6 runbook stage readout'. It specifies the exact type of data (cluster, RPC host, guards, fees, etc.) and distinguishes itself from sibling tools by being a dedicated go-live status checker and a free, ungated read.
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 for verifying go-live runbook stages but does not explicitly state when to use it versus other status tools (e.g., get_venue_status) or when not to use it. No alternatives or exclusions are mentioned, only that it is the 'primary verification instrument'.
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, ENG-9975a2a8/ENG-791a262d): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, it explains the private/opaque memory, P&L attribution, idempotency_key safety, tx_signature linking with 404 error behavior, best-effort fallback to recent confirmed transaction, and auto-journaling of autonomous executions. 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?
Front-loaded first sentence then structured paragraphs. It is longer than necessary but each section adds important operational detail (memory model, linkage, tx_signature workflow). Some technical references (ENG numbers) could be trimmed.
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 14-param tool, the description thoroughly covers operation, workflow, error cases (404), fallback behavior, and alternatives. Output schema exists so return values are not needed. It even mentions automatic journaling, making the manual use context 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 explains key params: idempotency_key, tx_signature, signal_ids, suggestion_id, strategy_id, expectations, rationale, intended_action. However, several params like decision_type, asset, caller_id/session_id/client_platform are left unexplained, relying on the agent's assumptions.
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 'Record a decision in your private, wallet-scoped journal (free write)' – a specific verb, resource, and scope. It distinguishes itself from journal_query and get_my_performance by stating it's the write side and mentions querying back later.
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 workflow guidance: journal before/as you act, use for agent-authored layer on top of automatic executions, and query back with journal_query/get_my_performance. Also advises passing tx_signature when available from swap/perp/lend/stake tools.
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 | ||
Tool Definition Quality
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 (MB#13601), deducted from swap output. Swaps are NOT additionally gated by x402 (ENG-1521ec28: 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 (ENG-5a051af4): 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 (ENG-fc290438/ENG-00ebde90, MB#18215) 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 (ENG-7ded4fb8, 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 (ENG-df8afe93, 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 (ENG-185ad857, gap RAILS-3): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description massively exceeds the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true). It discloses fee deduction mechanics via platformFeeBps, the UNVERIFIED_TOKEN security block, idempotency replay semantics, the verification block fields, geo-gating/OFAC screening, and the payment_header no-op. It also clarifies destructive behavior (broadcast path mutates state) and the non-idempotent nature without a key. 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 clear sections (workflow, security, verify, geo-gate) and front-loads the core purpose. However, it is over-long and contains numerous internal ticket identifiers (MB#13601, ENG-1521ec28, ENG-5a051af4, ENG-fc290438, ENG-00ebde90, MB#18215, ENG-7ded4fb8, ENG-df8afe93, ENG-185ad857, RAILS-3) that add noise without helping an AI 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?
For a complex 15-param tool with no schema descriptions and an output schema present, the description covers all critical operational dimensions: the two execution modes, fee schedule, token authenticity verification, geo-gating conditions, idempotent retry guidance, verification-block semantics, and workflow placement. It is effectively complete for safe and 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 description coverage, the description carries the full burden and compensates extensively. It explains amount in base units, signed_transaction's dual mode, allow_unverified risk trade-offs, venue_hint advisory behavior, idempotency_key direction, verify's default True and confirmation semantics, pay_in_crank's redefined effect, payment_header's no-op, and jurisdiction/ip geo-gate meaning. Self-evident params like input_token and wallet_address need no elaboration.
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 statement: "Execute a token swap via Jupiter (non-custodial)." It clearly distinguishes itself from siblings by specifying spot routes via Jupiter aggregation, non-custodial execution, and the build-vs-broadcast duality. References to get_quotes and trade_equity further position it relative to other 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 workflow section gives clear context: "Get a price first with get_quotes. See get_trading_workflow," and positions this as the EXECUTE step after the risk phase. It names verify_transaction as the alternative for signature verification and clarifies venue_hint is advisory. However, it never explicitly states when NOT to use this tool versus other swap-like siblings (e.g., lst_swap), so it stops short of explicit exclusions.
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 | ||
Tool Definition Quality
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 (ENG-7ded4fb8, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-borrowing.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal mutation/destructiveness (readOnlyHint=false, destructiveHint=true, idempotentHint=false), and the description adds meaningful behaviors beyond those: returns unsigned base64 tx, pre-borrow health factor, authenticity verification gate, free-tier payment requirement, idempotency semantics, and two-phase broadcast/confirmation. 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 front-loaded with the core purpose. Each paragraph addresses a distinct concern: output, prerequisites, idempotency, and two-phase execution. Backticked parameters and references to ENG IDs keep it structured and 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?
Given the high complexity (14 params, two-phase execution, annotations) and minimal schema, the description covers the primary workflow, preconditions, fees, verification, idempotency, and execution handoff. The output schema exists, so return details need not be restated. However, it relies on a cross-reference to lend_deposit for full two-phase instructions, and some optional params remain ambiguous, leaving a small 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?
The description adds semantics for amount (base units), payment_header, allow_unverified, idempotency_key, and signed_transaction/verify. However, with 14 parameters and 0% schema-description coverage, several parameters remain unexplained: protocol, market, marginfi_account, pay_in_crank, caller_id, and wallet format. This is partial compensation for a large undocumented 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 specific verb and resource: 'Borrow against deposited collateral (non-custodial)'. It clearly distinguishes the tool from siblings like lend_deposit, lend_repay, and flash_loan by framing it as collateral-backed borrowing with a two-phase unsigned tx flow.
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 prerequisites and conditions: 'Deposit collateral first', daily free tier requiring a payment_header, allow_unverified risk, idempotency_key replay behavior, and the signed_transaction/verify flow. It lacks an explicit 'when not to use' alternative list, but the context is clear enough for an agent to choose this tool for collateral borrowing.
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 (ENG-a01f7fd6): 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 (ENG-fc290438): 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 (ENG-7ded4fb8, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-depositing.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, destructive=true), the description discloses key behaviors: returns an unsigned tx, requires payment_header past daily free tier, replays via idempotency_key, supports two-phase signed_transaction/verify flow, auto-route failover, counterparty-risk disclosure, and allow_unverified risk. 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 long but well-structured with paragraph breaks and front-loaded purpose. However, it contains internal engineering identifiers (ENG-a01f7fd6, ENG-fc290438, etc.) and repeated references to internal bridge naming that add noise and could be trimmed without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 14-parameter tool with two-phase execution, verification, and routing logic, the description covers the essential workflows and behavioral caveats almost comprehensively. It omits a few parameters (caller_id, pay_in_crank, market) and does not enumerate the full output schema, but the output schema exists and the description provides enough to use the tool correctly in most scenarios.
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 so thoroughly: amount is in base units, protocol values ('kamino'|'marginfi'|'auto'), venue_hint as advisory alias, idempotency_key as client UUID, signed_transaction/verify semantics, marginfi_account requirement, payment_header, and allow_unverified. It leaves only minor params like caller_id/pay_in_crank unexplained, which are likely internal.
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 clearly states the tool's action: 'Deposit assets to earn yield on Kamino or Marginfi (non-custodial).' It distinguishes itself from sibling tools by positioning lend_deposit as the one first-class MCP path for both pinned and auto-routed deposits, and even references naming alignment with jupiter_swap/trade_equity.
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: 'supply idle stables/tokens after comparing get_lending_rates; monitor with get_health_factor. See get_trading_workflow.' It further clarifies why this tool exists instead of a separate earn_quote/trade_earn surface, and explains when to pin protocol vs use auto-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 (ENG-7ded4fb8, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-repaying.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by explaining that the tool returns an UNSIGNED base64 transaction, requires a signed_transaction re-call for broadcasting, and has idempotency replay behavior with idempotency_key. This clarifies the destructiveHint=true annotation by showing the destructive action is deferred until signed. It also discloses the payment_header requirement, which is not evident from annotations or schema.
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 first sentence stating the core purpose, followed by bullet-point-like paragraphs for idempotency and two-phase execution. It is not overly verbose; each section adds necessary detail. The reference to lend_deposit for further details is efficient, though it does require the agent to look up 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?
Given the tool's complexity (12 params, output schema, annotations), the description covers the essential workflow: returning an unsigned tx, explaining the replay behavior, and outlining the two-phase execution. It also notes the payment_header condition. The existence of an output schema means return values need not be detailed. Missing pieces are mostly optional parameters, but the core usage 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?
With 0% schema description coverage, the description must compensate for parameter meaning. It explains amount ('base units of token'), payment_header (required past free tier), idempotency_key (UUID for replay), and signed_transaction/verify (two-phase execution). However, several parameters like protocol, token, wallet_address, market, and marginfi_account are not explicitly described; protocol and token are self-explanatory, but the lack of definitions for market/marginfi_account leaves gaps for optional but potentially important 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: 'Repay borrowed amount (non-custodial).' This clearly identifies the tool's action and distinguishes it from siblings like lend_borrow and lend_deposit. The non-custodial attribute and the mention of returning an unsigned transaction add useful 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 provides clear context on when to use the tool (to repay a loan) and important conditions (payment_header required past free tier, two-phase execution). It points to lend_deposit for related details, but does not explicitly state alternatives or exclusions. Still, the guidance is sufficient for an agent to select 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.
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 (ENG-27ae391a, gap RAILS-4): closes are geo-gated too --
see short_open.
idempotency_key (ENG-7ded4fb8, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond annotations by detailing the exact sequence of operations (sell, repay, withdraw), the ordered step plan return, geo-gating, payment requirements, and idempotency replay behavior. This adds significant behavioral context not present in the readOnly/destructive hints. 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 front-loaded, using four sentences that each carry essential information: the unwind flow, return type, payment requirement, jurisdiction, and idempotency semantics. No filler or redundancy; the inline references are relevant.
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 params, output schema present), the description covers the core flow, return type, payment, geo-gating, and idempotency. It does not explain all parameters, but the output schema likely covers return structure, and the omitted params are reasonably inferable. Slight gap in addressing the remaining params keeps it from a 5.
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 jurisdiction and idempotency_key explicitly and references position_id's origin. However, 11 parameters exist and most (e.g., wallet_address, market, slippage_bps, marginfi_account) are left undocumented, requiring the agent to infer their meaning from 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 opens with a specific verb and resource: 'Unwind a tracked leveraged position: sell -> repay stable -> withdraw.' This clearly distinguishes it from sibling tools like leverage_long (which opens positions) and short_close. It also specifies the source of position_id, grounding 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 states prerequisites ('position_id from leverage_long') and a key operational condition ('Past the daily free tier an x402 payment_header is required'). It also references short_open for geo-gating context, implying a related alternative. However, it does not explicitly say when not to use this tool versus other close-related tools.
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 (ENG-27ae391a, gap RAILS-4): leverage is geo-gated too --
see short_open.
idempotency_key (ENG-7ded4fb8, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already indicating destructiveHint=true and readOnlyHint=false, the description adds valuable behavioral context: it returns an ordered step plan of unsigned base64 txs, effective leverage, loop count, health factor, position_id, and explains idempotency behavior (retrying with same key replays original result). It also discloses risk/location gating. It doesn't explicitly warn that the operation is irreversible or modifies positions, but the destructive annotation covers the baseline safety signal.
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: first sentence states the action and method; second lists return values; third explains base units and verification; fourth covers payment_header; fifth and sixth add jurisdiction and idempotency. Every sentence adds a distinct fact, no fluff, and important caveats are front-loaded after the core 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?
Given the tool's complexity (16 params, no schema coverage, presence of output schema), the description covers the critical behavioral facets: verification, geo-gating, idempotency, payment, and return shape. It slightly under-specifies the meaning of market, protocol, and marginfi_account parameters and does not explain failure modes, but the output schema and annotations fill some gaps, making this reasonably 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?
Schema coverage is 0%, so the description must compensate, and it does meaningfully. It explains amount is in base units, allow_unverified toggles a verification bypass, idempotency_key enables replay, jurisdiction is geo-gated, and payment_header is required past a free tier. It does not document every parameter (e.g., slippage_bps, marginfi_account, stable_token), but the most safety-critical and non-obvious ones are clarified, which is strong for 16 params.
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 explains the tool's purpose: opening a lending-based leveraged long with a detailed step-by-step summary of the mechanics (deposit -> borrow stable -> buy more -> redeposit). It differentiates from siblings like leverage_close, lend_borrow, and short_open by specificity, and even references short_open for geo-gating details, which further anchors its role.
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 the tool (to open a leveraged long position) and includes important preconditions: token authenticity verification, allow_unverified flag for risky use, daily free tier with x402 payment_header requirement, and geo-gating jurisdiction constraints. However, it does not explicitly name alternative tools for different scenarios (e.g., when to use perp_open_long instead), leaving some ambiguity for an agent comparing leveraged lending vs. perp leverage.
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 (ENG-7ded4fb8, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-staking.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by disclosing key behavioral traits: it returns an UNSIGNED transaction that must be re-submitted for broadcast, details the two-phase execution flow with signed_transaction/verify, explains idempotency_key behavior, fee structure, and the verification block semantics. It even warns to gate decisions on verification.confirmed, never tx_signature alone. This is rich behavioral context that the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false) do not capture.
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 (~300 words) but is well-structured with logical sections: summary, parameters, workflow, and special features. Each sentence provides useful context, and the front-loaded opening is clear. While compactness could be improved, the complexity of the tool justifies much of the 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 complexity (10 parameters, two-phase execution, non-custodial staking, fees, verification), the description covers all critical aspects: the staking action, return format (unsigned tx + LST + APY), the broadcast workflow, idempotency, verification semantics, and integration with other tools like get_lst_yields. It leaves little ambiguity for an agent to misuse it.
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 load. It explicitly explains 'amount in lamports', 'protocol: marinade | jito | blaze', 'x402 payment_header', 'pay_in_crank', 'idempotency_key', and 'signed_transaction/verify'. However, not every parameter is covered—wallet_address, caller_id, and allow_unverified are left undefined, leaving some room for interpretation, though they are relatively less obscure.
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: 'Stake SOL for a liquid-staking token (non-custodial).' It clearly states the action (stake) and the output (LST), and differentiates from related siblings like unstake_lst and lst_swap by focusing on the staking leg. It also gives protocol options and return value details, making the tool's function 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 includes an explicit workflow: 'stake the idle slice after comparing get_lst_yields', and references complementary tools like portfolio_snapshot and get_trading_workflow. This tells the agent exactly when to use the tool (after yield comparison) and how it fits into a larger sequence. It also explains the two-phase execution requirement, which is essential for correct usage.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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; ENG-5029a312).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide read-only, idempotent, non-destructive. Description adds context: free read, descriptive historical data only, not advice. 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?
Well-structured: summary, detailed fields, workflow note. Some redundancy but generally efficient and informative.
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 what the tool does, returned fields (tier, cost-gate, coverage, effectiveness, gameability), and integration with other tools. Output schema exists but description provides sufficient 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 coverage is 0% and description does not mention parameters (caller_id, include_inactive). Agent receives no parameter guidance from 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 clearly states it lists the catalog of available signal streams with details about content. Distinguishes from sibling get_signals for inspecting a stream's feed.
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 guidance: use as COMPOSE step before authoring composite strategy; pair with get_signals for feed inspection. Also indicates it's a free read and not financial advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_support_ticketsARead-onlyIdempotentInspect
List/filter Crank support tickets (newest first). Read-only.
Filters (all optional): status (open|in_progress|waiting_on_user|resolved| closed), priority (low|normal|high|urgent), category (billing|technical| feature_request|general), search (matches ticket number/subject/requester email+name/wallet). Returns {count, tickets[]}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| search | No | ||
| status | No | ||
| category | No | ||
| priority | No | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds 'Read-only' and specifies return format {count, tickets[]}, along with filter semantics. 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?
Three concise sentences, front-loaded with purpose and read-only nature, then filters and return format. No extraneous 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?
Covers main functionality, filters, and return format. Output schema exists and description mentions {count, tickets[]}. Minor gaps like pagination behavior, but 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?
Description explains 4 of 6 parameters (status, priority, category, search) with valid values and search behavior, but omits limit and caller_id. Schema descriptions are absent (0% coverage), so description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List/filter Crank support tickets (newest first)' with a specific verb and resource. Distinct from siblings like get_support_ticket (single ticket) and assign_ticket.
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?
Lists all optional filters and their valid values, providing clear context for usage. Does not explicitly state when not to use or name alternatives, but the sibling tools make it obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_turnkey_drift_backlogARead-onlyIdempotentInspect
The known pre-ENG-5d4d7f01 Turnkey drift backlog.
Wallets with a Turnkey sub-org whose enclave policy has never been
confirmed synced (turnkey_policy_synced_at NULL) -- provisioned
before the re-push fix landed. Read-only triage list; drive
reconcile_turnkey_policy(wallet_address, repair=True) per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already declares readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description's read-only claim is consistent but not new. However, the description adds valuable context beyond annotations: the specific version 'pre-ENG-5d4d7f01', the exact NULL condition, and that it is a 'triage list' meant to drive a repair workflow. This enriches the agent's understanding of the tool's behavior and relationship to other tools.
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 tool's purpose, and the second adds the specific condition and a usage directive. Every sentence earns its place; there is no redundancy or fluff despite the rich 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 (so return value details are already covered) and comprehensive annotations, the description completes the picture; it states what the list contains, why it exists, and how to act on it. The workflow pointer to reconcile_turnkey_policy is particularly strong. No critical information is missing for a read-only 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?
The schema describes two parameters (limit, caller_id) with defaults but no descriptions. The description entirely omits any explanation of these parameters, leaving the agent to guess their purpose. With 0% schema description coverage, the description was expected to compensate, but it does not, so the agent cannot reliably set parameters correctly.
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 what the tool does: it lists wallets with a Turnkey sub-org whose enclave policy has never been confirmed synced (turnkey_policy_synced_at NULL), i.e., the pre-ENG-5d4d7f01 drift backlog. It uses a specific verb ('list') and identifies a specific resource (turnkey drift backlog) with a precise filter condition, distinguishing it from sibling tools like wallet_status or reconcile_turnkey_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 provides clear usage context: it identifies the tool as a 'read-only triage list' and explicitly directs the agent to call reconcile_turnkey_policy(wallet_address, repair=True) per wallet from the list. It implies when to use this tool (to get the backlog before repair actions) and even hints at the next step, though it does not explicitly mention 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.
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 | ||
Tool Definition Quality
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 (ENG-7ded4fb8, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-swapping.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description discloses significant behavioral details: returns an unsigned base64 tx, charges a service fee past the free tier, verifies to_lst authenticity, supports idempotency_key replay, and describes two-phase execution via signed_transaction/verify. This adds context about costs, safety, and execution flow.
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 front-loaded purpose, uses backticks for parameter names, and every sentence adds informative value. It briefly references liquid_stake for shared two-phase details, avoiding 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?
For a complex 11-parameter tool with an output schema, the description covers the core aspects: purpose, fee, authenticity, idempotency, and execution modes. It relies on liquid_stake for full two-phase details and omits a few parameter semantics, but overall it is quite complete for guiding 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 schema has 0% description coverage, so the description must compensate. It explains from_lst/to_lst as mints, amount in base units, and elaborates on allow_unverified, payment_header, idempotency_key, signed_transaction, and verify. However, wallet_address, caller_id, and pay_in_crank are not explained, leaving a small 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 'Swap between two LSTs via the Sanctum router (non-custodial)', a specific verb with a direct object and mechanism. This clearly distinguishes the tool from generic swaps like jupiter_swap and staking tools like liquid_stake or unstake_lst.
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 the tool's purpose (LST-to-LST swap) and references liquid_stake for two-phase execution, but it does not explicitly state when to choose this tool over alternatives such as jupiter_swap or unstake_lst. Usage guidance is implied 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.
note_createAInspect
Append an internal-only note to a support ticket (ENG-69d5785b).
Agent-side context: records an internal SupportMessage (is_internal_note=True) that is NEVER emailed to the requester, and leaves the ticket status unchanged. ticket_id: numeric id or human ticket number (e.g. CRK-AB2K9P).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| caller_id | No | ||
| ticket_id | Yes | ||
| sender_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds valuable context: the note is an internal SupportMessage, never emailed, and ticket status remains unchanged. This goes beyond annotations, though openWorldHint=true is not fully resolved but not contradicted.
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: two short paragraphs. The first sentence front-loads the primary action. No fluff, every sentence adds value (internal note, never emailed, status unchanged, ticket_id format).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so return values are covered. The description explains the key behavioral aspects (internal, no email, no status change) and ticket_id format. However, parameter descriptions for body, caller_id, and sender_name are missing, which is a gap for complete understanding.
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 describes ticket_id (numeric id or human ticket number), leaving body, caller_id, and sender_name unexplained. body is a critical parameter, and caller_id/sender_name are optional but undefined. Insufficient 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 explicitly states 'Append an internal-only note to a support ticket', specifying the verb (append), resource (internal-only note), and context (support ticket). It differentiates from sibling 'reply_to_ticket' by emphasizing the note is never emailed and leaves ticket status unchanged.
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 usage: use for internal notes that are never emailed to the requester and do not change ticket status. It implicitly distinguishes from external replies like 'reply_to_ticket', but does not explicitly name alternatives or 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.
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 (ENG-ac7961aa, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations: it explains the non-custodial nature, idempotency key for retry behavior, and the payment_header requirement past free tier. Annotations (destructiveHint=true, etc.) are consistent; 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 relatively concise with the main purpose upfront. It includes necessary behavioral details but could be more structured (e.g., bullet points). 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?
The description covers the main function and return values (offramp_id, estimated_fiat, status), and explains idempotency and payment_header context. However, it does not describe output schema fields in detail and leaves several parameters 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?
The description explains 4 out of 8 parameters (token, amount, destination, idempotency_key) in plain language, which adds meaning beyond the schema's empty descriptions. However, it omits explanations for wallet_address, caller_id, pay_in_crank, and payment_header.
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 for cashing out crypto to fiat via MoonPay, specifying it's non-custodial. This is a specific verb+resource combo that distinguishes it from other 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 description mentions a daily free tier and when a payment_header is needed, but does not explicitly state when to use this tool versus alternatives. No sibling tools are suggested as alternatives.
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 (ENG-27ae391a, gap RAILS-4): closes are geo-gated too --
see perp_open_long.
idempotency_key (ENG-7ded4fb8, 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 (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses substantial behavioral detail beyond the annotations: returns an unsigned base64 tx, exit price, and P&L estimate; requires payment_header past the free tier; is geo-gated; supports idempotency_key for replay; and uses a two-phase execution process. This far exceeds the minimal destructive/read-only hints in 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 uses compact paragraphs and backtick-delimited parameter names with cross-references. It is dense but remains under ~150 words, with each sentence adding meaningful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with output schema, the description covers essential behaviors: return value, payment, geo-restrictions, idempotency, and two-phase flow. It references perp_open_long for shared details, providing enough to invoke the tool successfully, though some peripheral parameters lack 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 coverage, the description meaningfully documents several key parameters: close_pct range, jurisdiction gating, idempotency_key behavior, signed_transaction/verify flow, and payment_header requirement. However, it leaves other params like position_id, pay_in_crank, and caller_id 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 'Close a perp position, full or partial (non-custodial)', which clearly specifies the action, resource, and scope. The non-custodial qualifier helps distinguish it from other close tools, but it does not explicitly contrast with sibling tools like close_perp_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 explains operational requirements (payment tier, geo-gating, two-phase execution) but does not explicitly state when to use this tool versus alternatives. Usage is implied by the purpose rather than directly guided.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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).
| Name | Required | Description | Default |
|---|---|---|---|
| venue | No | ||
| caller_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds context about venue aggregation behavior, which is useful and consistent 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?
Single sentence, front-loaded with purpose, no wasted words. Very concise while conveying core functionality.
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 don't need explanation. However, caller_id parameter is not described, and the description could briefly state what data is returned. Adequate but incomplete 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 coverage is 0%, so description must compensate. It explains the venue parameter's null behavior but does not describe caller_id at all. Missing information for one of two 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 'Perp markets across venues' with a specific note about venue=None aggregating all routable venues, which distinguishes it from perp_markets (likely single-venue). The verb+resource 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?
The description hints at usage by explaining venue aggregation behavior. While it doesn't explicitly name perp_markets as an alternative or specify when-not-to-use, the tool name and sibling list imply differentiation. Lacks explicit guidance but is clear enough.
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 (ENG-27ae391a, gap RAILS-4): modify (changes leverage/
exposure) is geo-gated too -- see perp_open_long.
idempotency_key (ENG-ac7961aa, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides substantial behavioral context beyond annotations: it is non-custodial, returns an UNSIGNED base64 transaction, requires an x402 payment_header past the daily free tier, is geo-gated for jurisdiction changes, and idempotency_key enables replay behavior. It also discloses that new_leverage/add_collateral require separate collateral operations. These details go far beyond the annotation flags (readOnly=false, destructiveHint=true) and materially help an agent understand 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 compact and front-loaded with the core action, then covers important details. Each sentence adds value, though references to 'ENG-27ae391a, gap RAILS-4' and 'x402' are cryptic and may confuse without prior context. It is not padded but could be slightly clearer for a general agent.
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, mutation with unsigned tx return, geo-gating, idempotency, payment requirements), the description covers most operational aspects. It explains the return type, prerequisites, and special behaviors. However, it leaves some parameters undefined (pay_in_crank, ip, caller_id) and does not clarify the output schema contents, relying on the output schema's existence.
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 key parameters: new_tp/new_sl map to trigger price adjustments, new_leverage/add_collateral require separate collateral deposits/withdrawals, jurisdiction is geo-gated, idempotency_key enables replay, and payment_header is required for x402. However, it omits explanations for ip, caller_id, and pay_in_crank, leaving some parameters 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 tool's purpose: 'Modify an existing open Drift ORDER by order_id (non-custodial).' It explicitly mentions adjusting trigger price (TP/SL), which distinguishes it from opening/closing/canceling perp orders. The resource (Drift ORDER) and method (modify) 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 implies when to use this tool (for modifying an existing open order) and differentiates from alternatives by focusing on order modification vs. opening/closing. It also references perp_open_long for jurisdiction clarification, providing a pointer to a sibling. However, it does not explicitly state 'when not to use' or list alternative tools for similar operations.
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 (ENG-27ae391a, gap RAILS-4): 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 (ENG-7ded4fb8, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-opening the position.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already mark this as destructive/open-world, the description adds numerous crucial behaviors: it returns an unsigned base64 transaction for the wallet to sign, charges fees on notional past a free tier, requires jurisdiction, supports idempotency keys for replay, and includes a verification block that should gate follow-on decisions. It explicitly warns not to rely on tx_signature alone, exceeding the annotation context and adding real 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 well-structured, using short paragraphs and code-formatted parameter names to improve readability. It is longer than typical but the subject is complex, and each sentence provides meaningful info. However, internal ticket references (ENG-..., RAILS-4) are somewhat noise-like and could be abbreviated or removed to make it more concise without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 15 parameters, an output schema, and complex execution semantics, this description is remarkably complete. It covers prerequisites (jurisdiction), pre-execution (unsigned tx), post-execution (verification block), fee behavior, idempotency, and TP/SL handling. The two-phase flow is fully documented, ensuring an agent can invoke the tool correctly and handle the response appropriately.
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 carries the full burden for parameter meaning. It explains market (via example SOL-PERP), size_usd (notional USD), leverage (max market), jurisdiction (ISO code remembered 90 days), idempotency_key (UUID for replay), signed_transaction/verify (two-phase), and TP/SL (informational). All required params are effectively clarified; only a few optional low-level params like `pay_in_crank` and `allow_unverified` are not explicitly detailed, but the most important semantics 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 description opens with a precise, active statement: 'Open a leveraged LONG perp position on Drift (non-custodial).' This names the exact action, resource, and direction, clearly distinguishing it from `perp_open_short` and other trading tools. The subsequent details about returning an unsigned transaction and giving market/size/leverage context further cement the 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 provides explicit usage instructions: jurisdiction must be declared (with clear denial for US persons/unknown jurisdiction), TP/SL are informational and should be placed as separate trigger orders after the position opens, and the two-phase execution flow explains when to re-call with a signed transaction. It also mentions alternatives for declaring jurisdiction (`declare_jurisdiction`/`trade_equity`) and clarifies `verify=false` behavior, giving substantial 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.
perp_open_shortADestructiveInspect
Open a leveraged SHORT perp position on Drift (non-custodial).
Same envelope as perp_open_long, opposite direction. jurisdiction
(ENG-27ae391a, gap RAILS-4), idempotency_key (ENG-7ded4fb8, optional)
and signed_transaction/verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, lowering the bar. The description adds 'non-custodial' and mentions two-phase execution via signed_transaction/verify, but the references to engineering tickets are cryptic and defer detailed behavior to perp_open_long. It does not fully disclose execution consequences or permission 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 short and front-loads the primary action in the first sentence. It avoids bloat, but the cryptic references (ENG-27ae391a, etc.) and the instruction to 'see perp_open_long' add clutter without immediate value. Still, it is appropriately sized for a 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?
With 15 parameters and a complex environment, the description is not self-contained. It relies heavily on consulting perp_open_long for the full envelope, and key behavioral details like jurisdiction handling and execution phases are only referenced via ticket numbers. An agent cannot fully understand the tool's capabilities from this description 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?
Schema description coverage is 0%, so the description must compensate. It names jurisdiction, idempotency_key, and signed_transaction/verify, but only idempotency_key is labeled optional and signed_transaction/verify is glossed as 'two-phase execution'. Core parameters like market, size_usd, leverage, and wallet_address are left entirely unexplained, and the ticket references are 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 opens with 'Open a leveraged SHORT perp position on Drift', which is a specific verb plus resource and direction. It differentiates from sibling perp_open_long by explicitly stating 'opposite direction'.
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 'Same envelope as perp_open_long' clearly positions perp_open_long as the long counterpart and implies this tool is for shorts, but it does not explicitly discuss exclusions or compare with other short tools like short_open. Still, the context is clear enough for an agent to select between the long and short variants.
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 | ||
Tool Definition Quality
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.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | No | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read-only behavior. The description adds context about the return structure (each position carries venue and custody_tier) and confirms it returns open positions. 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 extremely concise: two short sentences that front-load the purpose and immediately provide differentiating details. 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?
While the output schema exists and the description mentions return fields, it does not address pagination, error conditions, or the optional caller_id parameter. For a simple read tool with annotations, it is minimally adequate but leaves some behavioral 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 description bears full responsibility for parameter meaning. The description only mentions the venue parameter's aggregation behavior, but does not explain wallet_address, caller_id, or the full semantics of venue. This leaves significant 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 open perpetual positions for a wallet, specifies the aggregation behavior when venue=None, and mentions the return fields (venue + custody_tier). This distinguishes it from sibling perp_positions which likely targets a specific 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 hints at usage by noting venue=None aggregates across venues, suggesting that for specific venues, one might use another tool like perp_positions. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide scenarios or exclusions.
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 (ENG-27ae391a, gap RAILS-4): 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 (ENG-7ded4fb8, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-opening the order.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations (readOnly=false, destructive=true) by disclosing two-phase execution, jurisdiction gating and 90-day memory, idempotency semantics, fee structure, Tier B custody disclosure requirement, and verification gates. This adds substantial behavioral context that the annotations do not capture.
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: it front-loads the core action, then covers optional parameters, jurisdiction, workflow, idempotency, and two-phase execution in separate paragraphs. 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?
For a tool with 19 parameters and two-phase execution, the description covers the workflow, prerequisites, custody differences, fee model, and compliance constraints. It references supporting tools (get_venue_health, get_risk_assessment, perp_positions, get_trading_workflow) and relies on the output schema for return details, making it comprehensive for the 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 must compensate. It explains 9 of 19 parameters (side, market, size_usd, venue, acknowledge_tier_b, jurisdiction, idempotency_key, signed_transaction, verify) in detail, but leaves leverage, order_type, limit_price, stop_loss/take_profit, pay_in_crank, and payment_header unexplained. The coverage is helpful but far from 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+resource: 'Open a leveraged perp position on the best/selected venue (non-custodial).' It clarifies the side parameter, provides a market example (SOL-PERP), and differentiates itself from simpler sibling tools by handling venue selection and custody tiers.
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 embeds this tool in a workflow: 'EXECUTE step... after get_venue_health / get_venue_risk_score clear the venue and get_risk_assessment caps the size.' It also references get_trading_workflow for the full process and mentions fallback behavior. It doesn't explicitly exclude alternatives though, so it falls just short of full when-to-use/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_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 | ||
Tool Definition Quality
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_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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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_snapshotBRead-onlyIdempotentInspect
Full portfolio summary: positions, total value, allocation %, 24h change.
Persisted as a PortfolioSnapshot for historical tracking.
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 |
|---|---|---|---|
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Persisted as a PortfolioSnapshot for historical tracking' implying a side effect, but annotations declare readOnlyHint=true, which indicates no state modification. This contradiction misleads the agent about 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?
Three sentences, each adding distinct value: output summary, persistence behavior, and workflow context. No redundancy or 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?
The description lists output fields and workflow context but lacks parameter documentation. Given minimal parameters and rich annotations, completeness is adequate but not exceptional.
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 any parameters (caller_id, wallet_address). The agent receives no guidance on parameter 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 starts with 'Full portfolio summary: positions, total value, allocation %, 24h change.' This clearly specifies the tool's output and distinguishes it from sibling tools like get_balances or equity_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?
The description includes a workflow recommendation: 'Call before intelligence/risk so sizes are net of current holdings. See get_trading_workflow.' This provides context for when to use the tool, though it lacks explicit 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.
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 | ||
Tool Definition Quality
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_updateARead-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 (k-cleared, differentially private) 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, but the description explicitly says 'Creates a draft template' and describes raising a proposal for review, implying a state-changing write. This directly contradicts the readOnlyHint annotation, so per rubric transparency is scored 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 front-loaded with a clear one-sentence summary and then provides important caveats and workflow. It is longer than minimal but every section adds meaningful context, so it remains 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 an output schema exists, return values need not be described. The description covers purpose, approval flow, constraints, source of the required parameter, and disclaimers. It is nearly complete, though the non-required parameter semantics are 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 must compensate. It usefully explains pattern_id's source and eligibility, but it provides no semantics or guidance for name, caller_id, or description, leaving most 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 states a specific verb ('propose') and resource ('strategy template from an emerging pattern'). It clearly distinguishes itself from siblings like publish_strategy and approve_proposal by emphasizing that it only creates a draft requiring admin approval and can never publish or verify a live template.
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 usage context: it should be used for emerging patterns, with pattern_id sourced from get_emerging_patterns and only active patterns eligible. It also states what the tool will not do (publish, verify, modify live templates, auto-apply) and outlines the human approval workflow.
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 (MB#13761). 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds details beyond annotations: no return promises stored/surfaced, equity exclusion, and control-plane nature. 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?
Single paragraph, front-loaded with main purpose, each sentence 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?
Covers major constraints and context. Output schema exists, so return format is not needed. Some parameter details missing, but overall sufficient for a complex 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?
Despite 0% schema coverage, description explains key parameters: config_template (cloned set), anonymous (omit author), performance_summary (factual metrics), backtest_run_id (attached verified backtest). Omits several params but adds significant 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 clearly states the tool's action ('Publish a cloneable strategy config') and destination (marketplace/flywheel), distinguishing it from siblings like 'clone_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?
Includes explicit context: config_template as cloneable, anonymous omission, performance_summary constraints (no return promises, hard rule 8), backtest_run_id verification, and exclusion of Equity strategies (MB#13761). Also notes 'Read/control-plane, free.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reconcile_turnkey_policyAIdempotentInspect
Diff the LIVE Turnkey enclave policy against Django's expected policy.
Fetches the enclave's active signing policy and re-derives the same
expected policy set_wallet_policy would push, then diffs them.
applicable: false for a self-custody wallet (no Turnkey signer).
repair=False (default) only REPORTS drift -- operator-triggered repair
is safer than auto-repair given the security implications of a policy
re-push. repair=True re-pushes the expected policy and, on success,
stamps the drift-tracking timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| repair | No | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations (readOnlyHint=false, idempotentHint=true) by explaining exactly what happens in each mode: repair=False only reports drift, while repair=True re-pushes the policy and 'stamps the drift-tracking timestamp' on success. It also discloses the security implication of auto-repair. This provides a clear behavioral model without contradicting any 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 concise and well-structured. It opens with a clear one-sentence summary, then expands with necessary details about applicability and the repair flag. Every sentence adds value—there is no redundant repetition of the name or schema. The formatting with backticks and line breaks improves readability.
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 (policy diff with optional repair), the description covers the core behaviors, the repair mode's side effects, and the self-custody exception. An output schema exists, so the return format is presumably documented there. It doesn't mention any required permissions or error conditions, but the provided context is sufficient for an agent to invoke the tool safely and understand its outcome.
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 must compensate. It does add meaning for the repair parameter by explaining its two states and their effects. It also hints at wallet_address semantics by mentioning self-custody wallets. However, it does not clarify the caller_id parameter at all, and it doesn't explicitly define wallet_address as the address of the wallet to reconcile (though implied). Thus, it only partially fills 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 the tool's function: 'Diff the LIVE Turnkey enclave policy against Django's expected policy.' It specifies the exact resources (Turnkey enclave policy vs Django's expected policy) and the verb (diff). This distinguishes it from sibling tools like set_wallet_policy, which pushes the policy, whereas this tool compares and can optionally repair.
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 the tool is and isn't applicable: '``applicable: false`` for a self-custody wallet (no Turnkey signer).' It also gives explicit guidance on the repair parameter: 'repair=False (default) only REPORTS drift' and 'repair=True re-pushes the expected policy,' with a safety rationale for operator-triggered repair. It references set_wallet_policy as the source of the expected policy, implying an alternative, though it doesn't explicitly say 'use this instead of X'.
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 | ||
Tool Definition Quality
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_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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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.
reply_to_ticketAInspect
Reply to a support ticket — emails the requester (SendGrid) + threads it.
Records the outbound message and advances status (open/waiting ->
in_progress, or waiting_on_user when set_waiting). The message is persisted
even if email delivery fails; the returned email_sent reflects the
delivery attempt.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| caller_id | No | ||
| ticket_id | Yes | ||
| sender_name | No | ||
| set_waiting | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, etc. The description adds valuable context: message persistence on email failure, status advancement rules, and the returned email_sent field. 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?
Three sentences covering main action, side effects, and error handling. Front-loaded with the core purpose. 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?
Provides high-level behavior and return value. Missing parameter explanations reduce completeness for an agent that needs to correctly supply arguments. With an output schema present, the return description 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 input schema has 5 parameters with 0% description coverage. The description does not explain each parameter (e.g., caller_id, sender_name) beyond mentioning set_waiting. It adds some meaning via return behavior but fails to 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 replies to a support ticket, emails the requester, and threads it. This is a specific verb+resource combination and distinguishes from siblings like assign_ticket or update_ticket_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 explains when to use (replying to a ticket) and provides behavioral context (email sending, status advancement, message persistence). However, it does not explicitly state when not to use or provide direct alternatives among siblings.
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.
Call this when authorize_session_signer refuses with BROWSER_CONFIRMATION_REQUIRED (Lane 2 wallet -- ENG-b35851ed). 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses significant behavioral traits beyond annotations: it opens a handshake but does not authorize, requires the wallet owner's approval in their own browser, is wallet-signature gated, and never happens in-chat. This adds context about side effects, async flow, and human-in-the-loop requirements, complementing the annotations well.
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 the main action in the first sentence. It contains only high-value information, including trigger conditions, non-behaviors, and follow-up steps. No wasted words, and the structure is 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?
The description provides a rich workflow context: when to invoke, what it returns, and the required follow-up polling. It leverages the output schema for return values and clearly explains the human-approval constraint. However, the lack of parameter documentation prevents a perfect score, as the six-parameter schema with 0% coverage needs more elaboration for 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 for parameter meanings. It does not explicitly describe any of the six parameters (wallet_address, signer_pubkey, label, caller_id, expires_at, capabilities). While the tool's purpose implies wallet_address and signer_pubkey, the other parameters remain unexplained, leaving 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 clearly states the tool's action: 'Open the browser-confirmation handshake to authorize a session signer.' It differentiates from siblings by specifying it does NOT authorize the signer and returns a confirmation URL, analogous to enable_agent_wallet. This is a specific verb+resource with clear scoping.
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 usage trigger: 'Call this when authorize_session_signer refuses with BROWSER_CONFIRMATION_REQUIRED.' It also explains what the tool does not do and directs the user to poll with poll_session_signer_authorization(device_code) once approved, providing a clear next step and distinguishing it from 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 | ||
Tool Definition Quality
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 (ENG-39ec13bf).
| Name | Required | Description | Default |
|---|---|---|---|
| caller_id | No | ||
| signer_pubkey | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, but the description adds valuable behavioral details: it is an atomic DB UPDATE, there is no cache/TTL window, and the gate resolves the row fresh on every call. This goes beyond annotations and helps the agent understand the immediacy and 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 very concise: two sentences with no fluff. The first sentence gives the primary purpose, and the second provides implementation detail about atomicity and cache behavior. 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 has an output schema and annotations, the description covers the key behavioral aspect (immediate revocation) and the main parameter. It does not explain what the output looks like, but that is covered by the output schema. The only gap is the purpose of 'caller_id', but the overall description is sufficient for a simple revoke 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 description coverage is 0%, so the description must compensate. It mentions 'signer_pubkey' in the description, which is the key parameter, but does not explain the optional 'caller_id' parameter. Since the description adds context for the primary parameter but fails to clarify the second parameter, a score of 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 clearly states 'Instantly revoke a delegated session signer' with a specific verb and resource, distinguishing it from sibling tools like 'authorize_session_signer' and 'list_session_signers'. It also adds the nuance of non-custodial control plane, which further clarifies its 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 the tool is used to revoke a delegated session signer, and the mention of 'enforced on the very next call' provides context on when the effect is observable. However, it does not explicitly mention when to use this tool versus alternatives like 'list_session_signers' or 'authorize_session_signer'.
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 (ENG-7ded4fb8, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds extensive behavioral details beyond annotations: it locks tokens into escrow, returns an unsigned transaction, explains claim process, expiry, unclaimed return, anti-abuse gates, and idempotency_key effect. No contradiction with annotations (destructiveHint=true aligns with locking tokens).
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 clear summary sentence followed by detailed paragraphs. It is front-loaded and each sentence adds value. Some redundancy (e.g., repeating 'platform: x') but overall efficient 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 tool's complexity (10 parameters, 4 required) and an available output schema, the description covers key behaviors, return values, and constraints. Missing details on caller_id and allow_unverified reduce completeness slightly. Anti-abuse info and idempotency 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?
The description explains most parameters (amount, token, sender_wallet, expiry_days, idempotency_key, referral, platform, recipient_handle) but misses two: caller_id and allow_unverified. With schema description coverage at 0%, the description should cover all parameters; it partially compensates but has 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 action: 'Send tokens to an X handle via a claimable crank.ing link'. It specifies the verb 'send', resource 'tokens', recipient type, and mechanism. It distinguishes from siblings like bulk_send_social (which handles bulk) and check_claim_status (which checks status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides good usage context: it explains anti-abuse gates (account age, verified wallet, daily limit) and idempotency behavior. However, it does not explicitly contrast with sibling tools like bulk_send_social or provide clear 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.
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 (ENG-4a5e0443).
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses that the tool is free, is a control-plane write, moves no funds, and has no transaction notional, with a reference ID. It also reveals the 60s check cadence and webhook POST behavior. This materially adds context 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 compact and front-loaded, with four sentences each carrying distinct value: function, parameter detail, cost/safety notes, and workflow guidance. 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?
The description covers the tool's function, cadence, parameter types, cost implications, and workflow integration, which is strong for a 6-parameter tool. It falls short only on threshold units and lifecycle management (e.g., how to update/delete), so it is 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?
With 0% schema coverage, the description compensates by explaining alert_type values, token as a mint address, and webhook_url behavior. However, required parameters like threshold and wallet_address, plus caller_id, receive no special semantic guidance, leaving a partial 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 'Create a price/position alert checked every 60s by Celery beat,' clearly naming the action, resource, and cadence. It further distinguishes alert types and references get_trading_workflow, setting it apart from list_alerts and 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 places the tool in a workflow: 'MONITOR step -- arm after executing so a tripped level loops you back to the risk/execute phase.' It does not explicitly list alternatives or exclusions, but the workflow context makes the intended use clear.
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 | ||
Tool Definition Quality
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 (ENG-8c57afc3).
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 (ENG-574a0e66/ENG-d7bc9d28): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations indicate non-read-only and non-destructive behavior, the description adds substantial behavioral context: default OFF, metered background check with Haiku/Sonnet escalation, daily_wake_budget hard cap, and the guarantee that 'the worker never executes -- every proposal is approved in your own wallet.' It also details the kill-threshold mechanism with defaults and the ability to disable it, going far beyond the annotation 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 longer than average but organized into focused paragraphs with clear subsections (default behavior, kill threshold, workflow). It is front-loaded with the core purpose, and every sentence adds meaningful detail. However, the 'See get_ooda_status' reference appears twice, slightly redundant, and the text could be tightened without losing information. Still, it is appropriately detailed for a tool with seven parameters and multiple configuration options.
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 (7 parameters, configuration thresholds, workflow), the description covers all essential aspects: defaults, ranges, behavioral guarantees, kill-switch logic, and workflow steps. It references get_ooda_status for follow-up information, ensuring the agent knows how to verify outcome. The presence of an output schema (not shown) further reduces the need for return-value details. The description is complete enough for an agent to understand when and how to use 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?
With 0% schema description coverage, the description must compensate, and it does thoroughly. It explains daily_wake_budget (default 10, range 1-500), kill_window_days (default 30), kill_threshold_ratio (default '0.5', decimal string), and kill_threshold_enabled. It clarifies that all optional parameters are omitted to leave existing values. It does not explain caller_id, but that parameter appears to be a minor internal trace field, and the description adds meaning to every other parameter 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 opens with 'Opt in/out of the wake-on-condition worker (ENG-8c57afc3)', which is a specific verb+resource statement. It clearly distinguishes this tool from sibling setter tools by focusing on wake-on-condition consent and its associated configuration. It also mentions related companion status tool get_ooda_status, reinforcing its unique role.
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 guidance is provided: 'Workflow: consent step -- run once (or to change budget/kill config) before wakes can fire; check get_ooda_status afterward to confirm state.' It also tells when to use get_ooda_status for wake history and kill reasons, offering a clear alternative and complementary tool. The description explains when parameters should be omitted ('omit to leave the existing/default value untouched'), covering usage nuances.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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_ticket_priorityAIdempotentInspect
Set a support ticket's priority (ENG-69d5785b).
priority: low|normal|high|urgent. Metadata-only -- no email, no status change.
| Name | Required | Description | Default |
|---|---|---|---|
| priority | Yes | ||
| caller_id | No | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations by clarifying that the operation is metadata-only and has no side effects like emails or status changes. This helps the agent understand the behavioral impact, though the annotations already indicate readOnlyHint=false and 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 very concise (two sentences) and front-loaded. Every sentence adds value: purpose, constraints, and allowed values. No redundant or wasteful 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?
For a simple setter operation, the description covers purpose, allowed values, and side-effect constraints. It does not mention prerequisites like permissions or ticket existence, but given the availability of an output schema (not shown) and annotations, it is reasonably 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 must compensate. It does so for the priority parameter by listing allowed values, but fails to describe caller_id (default empty). The schema provides no descriptions, so the partial compensation justifies a 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 the action ('Set a support ticket's priority'), the resource, and lists the possible values (low, normal, high, urgent). It distinguishes from sibling tools like assign_ticket by specifying no other changes (metadata-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?
The description implies usage by stating 'Metadata-only -- no email, no status change,' but does not explicitly compare with alternatives or provide when-to-use guidance. It lacks explicit exclusions or context for when to use this tool vs. others.
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, ENG-f3aacdf1 -- 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 (ENG-45e5ea07).
| Name | Required | Description | Default |
|---|---|---|---|
| policies | Yes | ||
| caller_id | No | ||
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses that the operation is an upsert by policy_type, returns the full updated policy set, and may raise BROWSER_CONFIRMATION_REQUIRED on Lane 2 wallets for loosening changes. This adds substantial behavioral context not captured by the atomic 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 dense with information. Each sentence serves a purpose: opening scope, policy type list, behavior, and edge case with alternative. Although lengthy, it is organized and front-loaded, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a complex parameter set and the description covers all relevant aspects: policy types, value schemas, return value, error condition, and when to use an alternative. Given the output schema exists and annotations are present, this description is complete enough for a correct tool 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?
With 0% schema coverage, the description fully compensates by explaining the policies parameter in great detail, including all policy_type values and their associated value fields. It also clarifies the upsert semantics. The other parameters (wallet_address, caller_id) are self-explanatory or have defaults, so this comprehensive coverage earns a top 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 configures the caller's own trading limits and rules on an agent wallet, with a specific verb ('Configure') and resource. It lists the exact policy types and distinguishes itself from the sibling request_wallet_policy_loosening tool by clarifying when that alternative should be used.
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 usage context: it applies to the caller's own wallet, and on a Lane 2 wallet, a loosening change should use request_wallet_policy_loosening instead. It also notes that perp leverage cap is a separate follow-up and not part of this tool, preventing misuse.
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 (ENG-27ae391a, gap RAILS-4): closes are geo-gated too --
see short_open.
idempotency_key (ENG-7ded4fb8, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond annotations by detailing the multi-step process, return value, payment requirements, jurisdiction gating, and idempotency_key replay behavior. This adds significant context to the destructiveHint=true 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-organized and front-loaded with the core purpose, using bullets for key details. However, references to internal ticket IDs (ENG-27ae391a, ENG-7ded4fb8) add noise without clear value to an agent.
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 high-level process and important caveats, and the output schema covers return values. However, with 12 parameters and zero schema descriptions, the missing parameter semantics make it incomplete for a complex mutation 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 coverage is 0%, so the description must explain parameters. It only explains short_id, jurisdiction, and idempotency_key. Required parameters like wallet_address remain undefined, and fields like market, buy_with_amount, and slippage_bps are left to inference. This is insufficient for 12 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: 'Close a tracked short' with a process breakdown (buy token -> repay loan -> withdraw collateral). It also mentions the return of an ORDERED STEP PLAN + exit price, distinguishing 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 clear context for use: requires a short_id from short_open, and notes the payment_header requirement past the free tier. It also mentions geo-gating referencing short_open. However, it does not explicitly compare to alternatives like close_perp_position, but the close short purpose is clear.
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 (ENG-27ae391a, gap RAILS-4): 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 (ENG-7ded4fb8, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating operation (readOnlyHint=false, destructiveHint=true), and the description goes well beyond that by disclosing the ordered-step-plan return, the base64 unsigned tx flow, authenticity verification, the optional allow_unverified behavior, payment requirements, geo-gating, and idempotency semantics. It adds substantial contextual value 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 structured with a clear opening sequence, then return/format details, and dedicated labeled paragraphs for jurisdiction and idempotency_key. Each sentence carries necessary information for a complex 16-parameter tool; length is appropriate for the tool's complexity without repetition 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?
Given the high complexity (16 params, output schema, annotations), the description covers purpose, output format, prerequisites (verification, payment, jurisdiction), idempotency, and key parameter meanings. With an output schema present, it correctly avoids over-explaining return structures, yet still mentions critical outputs like entry price and health factor. This is a complete and self-contained description for the tool's 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 does explain jurisdiction (including ISO format and 90-day memory), idempotency_key, allow_unverified, payment_header, and notes that amounts are in base units (relevant to collateral_amount/borrow_amount). However, many parameters like protocol, market, marginfi_account, slippage_bps, pay_in_crank, and caller_id remain undocumented, leaving meaning for those to schema defaults or inferred 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 a specific verb ('Open') and resource ('lending-based short') with a concise workflow: deposit collateral, borrow token, sell. It distinguishes from sibling tools like perp_open_short or leverage_long by explicitly naming the lending-based mechanism, and the return type (ordered step plan) further clarifies its role.
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 on when to use this tool: for synthetic lending-based shorts, with prerequisites such as geo-jurisdiction and possible payment_header. It references declare_jurisdiction/trade_equity/perps for jurisdiction declaration, but does not explicitly contrast with alternatives like perp_open_short or short_close, leaving exclusion guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | ||
Tool Definition Quality
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 (ENG-5ad7ea6e).
Thin wrapper around sidecar_service.is_configured()/healthcheck()
(ENG-b3372aa9) -- 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)" (MB#25893). 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already readOnly/openWorld/idempotent, and the description adds substantial behavioral detail: unconfigured raises a structured CONFIG_ERROR with no network attempt, unreachable returns an OK envelope with reachable:false, and it emphasizes no secret ever leaves the tool. It also explains the distinction between 'never tried' and 'tried and down', going well 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 front-loaded with the core purpose and then provides important nuances (CONFIG_ERROR vs unreachable envelope, security posture). It is somewhat lengthy with historical references and ENG ticket IDs, but those details add context about why the tool exists. The structure is logical, though it could be trimmed 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?
For a simple health-probe tool with one optional parameter, the description is extremely thorough: it covers purpose, failure modes, return semantics, security implications, and relationship to other checks. An output schema exists, so the description needn't itemize return fields. The only minor gap is the unmentioned caller_id parameter, but its optional default-empty nature reduces the impact.
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 one optional parameter (caller_id) with 0% description coverage, and the description does not mention or explain this parameter at all. With low schema coverage, the description should compensate, but it offers nothing about what caller_id is, whether it's used, or how to fill it. Even though the parameter is optional, the agent is left completely in the dark about its 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+resource ('Live reachability probe against the deployed execution sidecar'), clearly identifying what the tool does. It distinguishes itself from a tester's local curl and from the go_live configured check, making its unique scope explicit.
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 on when to use this tool: to verify server-side reachability rather than the tester's own shell, and calls it 'THE tool that replaces a tester's local curl'. It even references the runbook Gate C and the failure mode that motivated the tool. However, it does not explicitly name alternative sibling tools or state when not to use them, so it stops short of full exclusionary guidance.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 (ENG-b2c60329):
max_position_pct / max_portfolio_exposure_pct / max_single_loss_pct
/ max_drawdown_pct / max_daily_loss_pct (percent; <=0 disables a guard).
Direction (ENG-bd44b1b7, 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 Drift 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description supplements annotations by explaining that risk overrides can disable safety guards, direction_mode defaults to following the market, and paper-trading occurs without a Turnkey signer via unsigned transactions. It does not contradict readOnlyHint/destructiveHint and adds meaningful behavioral context beyond the structured fields.
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 into clear labeled sections with markdown backticks, front-loads the primary action, and each sentence serves a purpose. It is somewhat lengthy but appropriate given the 11-parameter complexity and the workflow 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?
It covers workflow prerequisites, risk overrides, direction modes, paper-trading behavior, and references get_trading_workflow for broader context. With an output schema and annotations present, it is fairly complete for the tool's complexity, though a few parameters remain unexplained and the distinction from strategy_equity_dca_create is implicit rather than explicit.
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 the semantics of many key parameters: usd_per_buy, target, interval, risk subfields (max_position_pct etc.), direction_mode, allow_short, and regime_override. However, it omits smart, slippage_bps, source_token, and interval_seconds (though interval is implied), leaving some 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 clearly states it creates a dollar-cost-average strategy buying a specific usd_per_buy of a target each interval. This distinguishes it from sibling strategy creation tools like momentum or yield strategies, and the first sentence is highly specific with a 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?
It explicitly places the tool in a workflow: the EXECUTE step after backtest_strategy validates and get_risk_assessment sets guards, with tracking via strategy_status. It also points to get_trading_workflow. However, it does not explicitly name alternative tools or state when-not-to-use, though context implies prerequisites.
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 (ENG-6f4d3513): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the SEC posture (MECHANICAL vs discretionary), the per-execution confirmation gate for discretionary types, and geo-gating/disclaimers at execution. It also states that it shares the DCA executor with strategy_dca_create, adding behavioral context not present in structured fields.
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 three paragraphs with a clear lead sentence, but includes verbose context and an internal ticket ID (ENG-6f4d3513) that adds noise. Still, it remains focused and each paragraph serves a purpose: purpose, behavioral context, and parameter reference.
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 11-parameter creation tool with no schema descriptions, the description covers the critical context: SEC posture, preconditions, and the relation to the general DCA tool. The output schema likely covers return values, so the description's focus on behavior and prerequisites is adequate, though it could explicitly list required 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%, but the description compensates by stating that the configuration is identical to strategy_dca_create and directing the agent there for risk/direction params. It also clarifies that target_token is expected to be a tokenized-equity mint. However, it does not define individual parameters like interval_seconds or smart, relying entirely on the cross-reference.
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 an equity dollar-cost-average strategy (tokenized equities / xStocks).' It further differentiates from the general sibling strategy_dca_create by explaining the equity_dca tag and the target_token being a tokenized-equity mint, making it clearly distinct.
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 directs the agent to call asset_classification / get_disclaimers first, and explains the SEC posture regarding autonomy on security targets versus discretionary strategies. It also references strategy_dca_create for risk/direction parameters, providing clear alternatives and prerequisites.
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 | ||
Tool Definition Quality
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).
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe read (readOnlyHint, idempotentHint, destructiveHint false). Description adds ordering ('newest first') and capping, which are useful behavioral traits 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?
Single sentence with no filler. Front-loaded with action and scope. 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 simplicity (1 param, output schema present), the description covers the core behavior (list, order, limit). Output schema handles return details per guidelines.
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 'wallet_address' has no schema description (0% coverage). The description does not explain its role beyond the tool name. The parameter's purpose is partially inferred from context but not explicitly stated.
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 verb 'List', resource 'strategies', and scope 'a wallet', with ordering 'newest first' and constraint 'capped'. Distinguishes from sibling tools like 'discover_strategies' which lists globally.
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?
Implies usage for listing a wallet's strategies but lacks explicit guidance on when to use this vs alternatives (e.g., 'discover_strategies' for global discovery, 'strategy_status' for single strategy). No when-not or exclusions provided.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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, ENG-6f4d3513): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral trait beyond annotations: for tokenized securities, per-execution user confirmation is required, while crypto targets remain autonomous. This explains the execution workflow and the SEC framework, adding significant 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 front-loaded with purpose and efficiently covers mechanism, critical caveat, and a parameter pointer in about 100 words. Each sentence earns its place, though the SEC block is dense and could potentially be simplified 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?
For a 12-parameter tool with no schema descriptions, the description provides the core strategy logic, the critical confirmation requirement, and a pointer for shared parameters. The output schema covers return values, so omission is acceptable. Still, the reliance on another tool's description for 'risk/direction' params leaves some gaps if that tool's description is not accessible.
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 meaning of 'fast' and 'slow' via the crossover logic. It also points to strategy_dca_create for risk/direction parameters, helping the agent find missing semantics. However, many other parameters (e.g., slippage_bps, interval_seconds, regime_override) are not described directly in this tool's 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 creates a momentum strategy using fast/slow SMA crossover with explicit entry/exit conditions (bullish/bearish cross). This specific mechanism distinguishes it from sibling strategy creation tools like strategy_dca_create or strategy_sentiment_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 provides clear context: it is for SMA crossover momentum strategies and includes an explicit prerequisite ('Call asset_classification first') and a cross-reference to strategy_dca_create for risk/direction parameters. It lacks an explicit 'when not to use' statement, so it stops short of a full alternative comparison.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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_createCDestructiveInspect
Create a portfolio-rebalance strategy toward target_allocation (mint->weight).
Direction (ENG-bd44b1b7, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and readOnlyHint=false, so the tool likely mutates state, but the description adds no behavioral context about side effects, permissions, or what 'destructive' entails. It mentions 'deterministic signal' but not what happens on creation. No contradiction with annotations, but the description carries little extra behavioral 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 short and front-loaded with the main purpose. However, the second sentence contains a cryptic 'ENG-bd44b1b7' that adds confusion without value, and the structure could be clearer by expanding on how to use the referenced parameters. It's concise but not cleanly 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?
For a tool with 9 parameters, an output schema, and annotations, this description is incomplete. It covers the core purpose and a few direction-related parameters, but lacks context about risk, timing, thresholds, and the overall behavior of rebalancing. The pointer to another tool helps but is not sufficient. Given the output schema exists, return values don't need explanation, but usage and parameter context remain thin.
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 touches on direction_mode, allow_short, and regime_override as part of a 'Direction' group. However, it leaves risk, slippage_bps, interval_seconds, drift_threshold_pct, and wallet_address unexplained. This is insufficient for a 9-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 tool creates a portfolio-rebalance strategy toward a target allocation, using a specific verb ('Create') and resource ('portfolio-rebalance strategy'). It adds the useful detail that target_allocation is mint->weight, which distinguishes it from generic strategy creation. However, it does not explicitly contrast with sibling strategy creation tools (e.g., strategy_dca_create), so it's clear but not fully differentiating.
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 only cross-reference is 'see strategy_dca_create' for direction details, which is about parameter understanding, not usage context. It does not state typical scenarios, prerequisites, or 'use when you want to rebalance a portfolio'.
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 (ENG-b2c60329) 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by explaining the drawdown kill switch latch (ENG-b2c60329), the requirement for explicit owner action, and the reset of the high-water mark to prevent immediate re-trip. This is valuable behavioral context not available from annotations alone, especially given the destructiveHint 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 two sentences, front-loaded with the main action, and each sentence adds critical information (what it does and why it is needed). No unnecessary words or repetition, making it highly concise 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?
For a mutation tool with two simple parameters, the description gives essential background (kill switch behavior) and consequences (high-water mark reset). It lacks explicit parameter guidance and possible failure modes, but the core context is covered. With an output schema present, the maintainer likely expects response details elsewhere, so the description is adequate overall.
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 what either strategy_id or wallet_address represents. While the names are somewhat self-explanatory, the description provides no additional meaning or format details, failing to compensate for the lack of schema descriptions. The parameter semantics are almost entirely absent.
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 ('Re-enable a paused strategy') with a specific resource (strategy) and context (after drawdown pause). It distinguishes from related tools like strategy_pause by specifying it is the manual re-enable action, and mentions the kill switch latch, so the purpose is 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?
It provides clear context: this tool is used when a strategy is paused due to drawdown, and requires explicit owner action. It implies when to use it versus waiting for automatic behavior, but does not explicitly discuss alternatives or when not to use it. Still, the usage context is well-defined for a simple operation.
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, ENG-6f4d3513): 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations include destructiveHint=true, the description adds meaningful behavioral context: the threshold-based trading logic, live vs. pinned sentiment source, and the SEC discretionary rule requiring per-execution user confirmation for tokenized securities. This goes well 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 reasonably concise, front-loading the main purpose and including a critical security warning without excessive prose. The inline backticks and the reference to another tool add slight noise, but it remains readable 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?
This is a complex 13-parameter creation tool with no schema descriptions. The description covers core trading logic and prerequisites, but leaves many parameters underexplained and relies on external references. The output schema exists, so return values are covered, but the parameter gap makes the description incomplete for safe autonomous 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 explain parameters. It clarifies bull_threshold, bear_threshold, and sentiment_score, and mentions user_confirmed, but 13 parameters exist. Many (allow_short, regime_override, interval_seconds, etc.) are only vaguely referenced by pointing to strategy_dca_create. This cross-reference helps but does not compensate sufficiently 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 opens with a clear, specific verb and resource: 'Create a sentiment strategy -- trades an aggregate sentiment score.' It then details the buy/sell logic (bull/bear thresholds), which fully distinguishes it from the many other strategy_*_create 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?
It provides a prerequisite: 'Call asset_classification first,' and points to strategy_dca_create for risk/direction params. It also clarifies the security vs. crypto execution difference. However, it does not explicitly state when to choose this strategy over alternatives, 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.
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 | ||
Tool Definition Quality
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 | ||
Tool Definition Quality
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 (ENG-bd44b1b7, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that position_amount will be liquidated on trigger, complementing the destructiveHint=true annotation and adding real behavioral context. It also notes that the direction signal is optional and deterministic. It does not explain other side effects or required authentication, but the annotations already cover the core destructive nature.
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: the main purpose appears in the first sentence, followed by a short parameter explanation and a pointer to a sibling tool. Each paragraph serves a purpose without unnecessary prose.
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 tool with 0% schema description coverage, the description is only partially complete. It clarifies the core stop-loss/take-profit semantics but leaves the trailing configuration fields, risk object, slippage, and interval behavior unexplained. The output schema exists, so return values are not needed here, but input semantics are still under-specified.
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 carry the parameter-explanatory load, but it only explains position_amount, the percentage fields' fraction format, and the mutual exclusion condition. Many parameters (risk, slippage_bps, source_token, interval_seconds, trailing_distance_pct, entry_price) are left unexplained, forcing the agent to guess or seek external 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 opening sentence 'Create a stop-loss / take-profit / trailing-stop monitor on a held position' uses a specific verb and resource, and clearly distinguishes this from sibling strategy tools such as strategy_protect_create or strategy_dca_create. The scope is 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 ('on a held position') and a concrete precondition: at least one of stop_loss_pct, take_profit_pct, or a trailing config must be set. It also points to strategy_dca_create for direction-related parameters. However, it does not explicitly state when not to use this tool compared with 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_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 (ENG-bd44b1b7, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (write, destructive, open-world), the description discloses that the tool only rotates spot holdings via a non-custodial swap pipeline and does not deposit into an external vault/LP. It also notes the direction signal is deterministic and optional, adding meaningful behavioral context not captured in 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 three sentences, front-loading the primary purpose before adding mechanical and disambiguating context. 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?
With an output schema present, the description appropriately focuses on selection and behavior. It covers the core purpose, key mechanics, and parameter semantics via sibling references, making it sufficient for an agent to decide when to invoke and what to pass.
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 semantic meaning for target_allocation (mint->weight) and drift_threshold_pct, and points to strategy_dca_create for direction_mode, allow_short, and regime_override. However, it does not explain risk, slippage_bps, interval_seconds, or wallet_address, relying on inference 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 identifies the verb (create) and resource (vault strategy), defining it as a target-allocation basket held via rebalancing. It explicitly contrasts with strategy_rebalance_create, distinguishing the passive basket framing from an active rebalance loop.
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 explicit comparative guidance by stating it shares the rebalance executor with strategy_rebalance_create and is framed as passive rather than active. It also states a hard rule (no external vault/LP deposit) and refers to strategy_dca_create for directional parameters, giving the agent clear when/where-to-use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strategy_yield_farm_createBDestructiveInspect
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 (ENG-bd44b1b7, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, openWorldHint=true), the description discloses that the pipeline 'only rotates spot holdings, never deposits externally' and that the strategy maintains target allocation through rebalance swaps. This adds valuable behavioral context about how yield farming is modeled, which annotations do not convey.
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, and contains no filler. The middle sentence is dense but packs meaningful detail 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?
For a complex 9-parameter tool with output schema and nested objects, the description covers the core concept and key constraint (non-custodial, target allocation), but many parameters are undocumented. The presence of an output schema mitigates return-value explanation, but parameter semantics and usage guidance 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?
With 0% schema description coverage, the description must compensate but only names direction_mode, allow_short, and regime_override, deferring to strategy_dca_create for details. It does not explain risk, slippage_bps, interval_seconds, drift_threshold_pct, or target_allocation (beyond the phrase 'target basket allocation'), leaving most parameters semantically under-specified.
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 yield-farm strategy -- maintains a target basket allocation.' It uses a specific verb and resource, and provides a conceptual model (target allocation via converging rebalance swaps) that distinguishes it from other strategy creators. However, the reference to strategy_rebalance_create sharing the executor slightly blurs the 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 gives context about when this tool is appropriate by explaining the non-custodial constraint ('never deposits externally') and mentions direction parameters via strategy_dca_create, but it does not explicitly state when to use this tool over alternatives or provide exclusions. The guidance is implied rather than direct.
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 | ||
Tool Definition Quality
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 (ENG-4a5e0443).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | ||
| caller_id | No | ||
| token_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 context by explaining that it merges Helius (metadata) with Birdeye (market data) and is free with no transaction notional, providing value 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 concise, front-loaded with the returned data list, and each sentence serves a purpose: data content, input guidance, and free/read nature. 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?
Given the output schema exists, the description covers the key aspects: what data is returned, how to provide input, data sources, and cost. Minor gaps include no explanation of caller_id and ambiguity when both or neither token_address and symbol are provided.
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 by explaining token_address and symbol as alternatives. It omits caller_id, but the primary parameters are well described with their roles.
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 token metadata, price, liquidity, volume, and holder count, which specifies the resource and returned data. It also mentions merging Helius and Birdeye data, distinguishing it from sibling tools like get_token_classification or verify_token.
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 instructs to provide token_address (mint) or a known symbol, clarifying input requirements. It does not explicitly mention alternative tools or exclusions, but the listed data types make the use case evident.
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 (ENG-fc290438/ENG-00ebde90,
MB#18215) is ADVISORY, never required -- equity routes via the issuer
registry (one surface today); an unknown hint raises.
idempotency_key (ENG-7ded4fb8, optional): see jupiter_swap -- same
replay-on-retry semantics, same key reused across build + broadcast.
verify (ENG-e932b287, extending ENG-df8afe93, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructive, open-world), the description discloses crucial non-obvious behaviors: geo-gating for Reg S, OFAC screening, no autonomous equity execution without confirm=true, unsigned base64 transaction flow, verification block semantics, and venue_hint being advisory. It also explains payment_header requirements for value-bearing calls.
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 includes several extraneous ticket references (ENG-fc290438, MB#18215, ENG-7ded4fb8, ENG-e932b287) that add no operational value for an agent. While each sentence carries intent, the noise from these references makes it less concise than 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 complexity (16 params, regulatory constraints, two-phase execution), the description covers nearly all critical aspects: geo-gating, confirmation, verification, payment, venue hints, idempotency. The presence of an output schema offloads return-value documentation, and references to sibling tools complete the picture, though a few params like slippage_bps remain undocumented.
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: side, amount base units, confirm=safety, signed_transaction for broadcasting, ip for geo-gating, venue_hint being advisory, idempotency_key replay semantics, and verify default. It does not explain symbol, wallet_address, slippage_bps, allow_unverified, or pay_in_crank, but the most security-critical parameters are 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 opening sentence precisely states 'Spot-trade a tokenized equity (xStocks / Ondo) via Jupiter, non-custodial', specifying the verb, resource, and method. This clearly differentiates it from general swap tools like jupiter_swap and read-only equity tools such as equity_quote and equity_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?
The description gives strong usage context: it explicitly states that without confirm=true the call returns a quote and does NOT execute, and it references jupiter_swap for idempotency semantics and verify_transaction for later verification. However, it does not explicitly state 'use this for equity tokens instead of jupiter_swap', leaving that comparison implicit.
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 (ENG-7ded4fb8, optional): a client-generated UUID.
Retrying with the same key + same args replays the original result instead
of re-unstaking.
signed_transaction / verify (ENG-dc70e40b, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only high-level hints (readOnlyHint=false, destructiveHint=true, openWorldHint=true). The description goes beyond by explaining the non-custodial nature, routing behavior, fee structure, idempotency replay semantics, and the two-phase signed_transaction/verify flow. This is substantial added context, though potential failure modes or edge cases are not covered.
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 organized into clear sections. Every sentence adds distinct information (purpose, routing, fee, idempotency, two-phase). It is longer than strictly necessary but not wasteful; the structure aids readability.
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 9-parameter tool, the description covers the main workflow, token routing, fee policy, idempotency, and two-phase execution. An output schema exists to document return values. It lacks explicit error scenarios but is otherwise well-rounded for an agent to select and invoke 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 lst_token (mint examples), amount (base units), payment_header (fee), idempotency_key (UUID/replay), and signed_transaction/verify (two-phase). However, caller_id and pay_in_crank are left unexplained, 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 'Unstake an LST back to SOL (non-custodial)' – a specific verb, resource, and mode of operation. It further clarifies routing by token ('mSOL routes via Marinade, others via the Sanctum router') and distinguishes itself from related tools like liquid_stake by referencing it for two-phase execution.
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 contextual workflow ('Returns an UNSIGNED base64 tx', 'two-phase execution') but does not explicitly state when to use this tool versus alternatives such as lst_swap or liquid_stake. It references liquid_stake for one aspect but gives no exclusion criteria or direct comparison.
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 | ||
Tool Definition Quality
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.
update_ticket_statusAIdempotentInspect
Set a support ticket's status.
status: open|in_progress|waiting_on_user|resolved|closed. Stamps resolved_at on transition into resolved/closed and clears it on reopen.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| caller_id | No | ||
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond annotations: stamps resolved_at on transition to resolved/closed and clears on reopen. Annotations already indicate mutation (readOnlyHint=false) and idempotency.
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 with front-loaded purpose and essential details. 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 an output schema exists, the description need not cover return values. It covers the main parameter (status) but omits explanation for 'caller_id'. Fairly complete for a simple update 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 coverage, the description explains 'status' by listing valid enum values but does not describe 'caller_id' or 'ticket_id'. Partial compensation for 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?
Description clearly states 'Set a support ticket's status.' and lists valid statuses, distinguishing this from sibling tools like set_ticket_priority or assign_ticket.
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 versus alternatives or prerequisites. The description implies usage for changing status but lacks exclusions 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.
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 | ||
Tool Definition Quality
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 (ENG-a39caa6d).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | ||
| caller_id | No | ||
| token_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and non-destructiveHint. The description adds valuable context by naming the five verification layers and specifying the return fields (verification_status, reasons, warnings, per-layer findings). It also explicitly says 'read-only, no execution,' aligning with 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 reasonably concise with two short paragraphs. The first sentence clearly states the purpose. The second paragraph details the layers and return fields. However, it includes an internal reference ('ENG-a39caa6d') that is likely not useful to the agent, adding minor noise.
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 parameters, 1 required) and the presence of an output schema, the description provides good context: why, when, and what it checks. It lacks explanation of the parameters and any prerequisites or limitations, but these are minor omissions for a read-only check 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 should clarify parameter meanings. It mentions 'token mint' but does not explicitly link to the required 'token_address' parameter. The optional 'symbol' and 'caller_id' are not mentioned at all. The description provides no added semantics beyond what the schema field names imply.
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 performs a multi-layer authenticity check for a token mint, specifies it's read-only, and lists the exact verification layers. It also provides a clear use case: 'Call this before swapping into an unfamiliar token.' This distinguishes it from sibling tools like 'get_token_classification' which likely do not perform the same multi-layer check.
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 tells when to use the tool ('before swapping into an unfamiliar token'), providing clear context. However, it does not mention when not to use it or suggest alternative tools, though the siblings 'get_token_classification' and 'get_token_risk_assessment' exist. The absence of exclusions keeps it from a 5.
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 (ENG-df8afe93, harness spec MB#18289 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, etc.) indicate safe read operation. The description adds behavioral details: awaits on-chain confirmation, re-reads state for specific parameters, and returns retry_guidance on timeout. Fully transparent 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 thorough but slightly verbose; however, it is well-structured with bullet points for state hint cases and a clear return value description. Every sentence adds value, and the main purpose 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 complexity (9 parameters, state comparison logic), the description is highly complete. It covers behavior, parameter usage, return format, and usage guidelines. The output schema exists, so return values are adequately described.
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 explains all key parameters: tx_signature (required), commitment, timeout_s, wallet_address, mint, market, protocol, marginfi_account. It details how they map to state comparisons (e.g., mint+wallet for SPL/SOL balances). Provides full 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 verifies a prior transaction signature (FREE read), which is a specific verb-resource combination. It distinguishes from siblings by focusing on post-trade verification of signed transactions, unlike other verification tools (e.g., verify_token) that check token legitimacy.
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: after signing and broadcasting a transaction yourself, to confirm it landed before treating positions as changed. Also warns never to treat a timed-out result as success, providing clear usage context.
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 (ENG-fb2a9462).
Wires services.x402_settlement.verify_treasury_settlement (ENG-1be912ac
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 ENG-b936ca31/MB#20378, 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses error behavior (CONFIG_ERROR, retryable UPSTREAM_ERROR, no silent verified=False), gating status (never gated, never in x402 PAID_TOOLS), and data sensitivity (public only, never keys). It also explains the internal DB-pull fallback and RPC-round-trip bounding, going far beyond annotation expectations. 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 purpose and structured by parameter narratives, but it includes internal ticket references and file-collision backstory that do not help an agent select or invoke the tool. It is longer than needed and could be tightened while preserving the useful behavioral 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?
For a complex on-chain verification tool, the description covers the core proof semantics, optional parameter flow, error behavior, and access model. An output schema exists to handle return-value details. Minor gaps remain: `caller_id` is unaddressed and the full proof contract is deferred to the service docstring, but 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?
With 0% schema description coverage, the description compensates by explaining `signatures`, `since_iso`, `signature_limit`, and `expected_usd` in behavioral terms (auto-fetch, window, cap, coverage check). It omits `caller_id` entirely and doesn't pin down `since_iso` format, so compensation 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 description opens with a specific verb and resource: 'On-chain proof the treasury actually received settled x402 USDC', clearly identifying the tool's domain and separating it from generic verify_transaction/verify_token siblings. It further details the proof mechanism (treasury USDC ATA balance + settle-tx signature confirmation), making 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?
The description gives clear context for when to use the tool—checking on-chain settlement proof—and explains two invocation modes: omitting signatures to auto-pull recent ones, or passing an explicit signatures list to bypass the DB lookup. It doesn't explicitly name alternative tools or state when not to use it, but the mode guidance and FREE read note are strong usage cues.
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 | ||
Tool Definition Quality
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.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
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
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 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.212323MIT- Alicense-qualityBmaintenanceA non-custodial RWA service for AI agents on Solana that provides yield comparison, tokenized US-equity quotes, and ready-to-sign transactions.672MIT