DPX — Institutional Cross-Border Settlement
Server Details
AI-native settlement rail + intelligence oracle for autonomous agents. x402, Base mainnet, 81 tools.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- untitledfinancial/dpx-mcp
- GitHub Stars
- 1
- Server Listing
- dpx-mcp
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.4/5 across 81 of 81 tools scored.
Many tools have overlapping purposes, such as multiple stablecoin routing options (route vs stability.stablecoin_route), several compliance pre-checks (flow_check, policy.check, mercury.ach_authorize), and numerous FX/stability tools (oracle.stability, stability.corridor, market.fx, fx.rate). Even with detailed descriptions, the boundaries are subtle and an agent could easily select the wrong tool.
The dot-separated namespace convention is mostly consistent and readable, but verb vs noun usage varies (e.g., settlement.execute vs batch_settle vs route). Subscription tools also mix forms (intelligence.subscribe vs intelligence.subscription.get/delete), showing minor inconsistency.
81 tools is an extreme count for a settlement server. Even accounting for the broad 'institutional' scope, the volume overwhelms the core purpose and creates a heavy cognitive load for agents, far beyond the typical 3-15 well-scoped tool set.
The core settlement lifecycle is well-covered (quote, execute, track, receipt, batch), but there are notable gaps such as missing policy update/delete and no receipt retrieval (only create). While many tangential domains are over-covered, certain CRUD operations are absent, creating dead ends.
Available Tools
81 toolsagent.kya_registerAInspect
KYA — Know Your Agent. Three-tier registration model — compliance burden scales with settlement risk, no documents ever required. ANONYMOUS: agent name only, $1K/day cap, instant. REGISTERED: add ownerEntity + ownerEmail (self-attested, no verification), $25K/day cap, instant. VERIFIED: add ownerLei (active GLEIF LEI) — DPX calls the public GLEIF API, confirms ACTIVE status, and grants VERIFIED instantly. No documents, no manual review; LEI issuers (LOUs) have already done identity verification and DPX inherits it. VERIFIED agents get institutional caps (governed by mandate), FATF R.16 attestation on every settlement, and full AP2 mandate support. Legal basis: FATF R.16 originator = owner entity (not the agent); MiCA Art. 45/72 accepts LEI; GENIUS Act satisfied by entity attestation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name for this agent. | |
| mandate | No | Optional AP2-compatible spend mandate (REGISTERED/VERIFIED only). Caps are clamped to tier limits for REGISTERED agents. | |
| ownerLei | No | 20-char GLEIF LEI. Providing a valid active LEI instantly grants VERIFIED tier — no documents. Get your LEI at gleif.org. | |
| framework | No | Agent framework: "claude", "gpt-4o", "gemini", "custom", etc. | |
| protocols | No | Supported protocols: ["x402", "ap2", "mcp", "a2a"]. | |
| publicKey | No | Optional public key for credential signature verification. | |
| ownerEmail | No | Contact email. Required for REGISTERED tier ($25K/day cap). Self-attested, not verified. | |
| ownerEntity | No | Organization or person that owns/operates this agent. Required for REGISTERED tier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| agentId | No | Unique agent identifier (agt_...). Store this. |
| kyaLevel | No | |
| kyaScore | No | Trust score 0–100. |
| tierCaps | No | maxNotionalUsd and dailyCapUsd effective for this agent. |
| tierNote | No | Explanation of tier and how to upgrade. |
| leiVerified | No | true if LEI was confirmed via GLEIF API. |
| leiEntityName | No | Legal name from GLEIF record (VERIFIED only). |
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 actual runtime behavior: DPX calls the public GLEIF API, checks ACTIVE status, grants tiers instantly, and requires no documents or manual review. It also discloses the legal basis and cap limits, which helps an agent anticipate side effects. It does not, however, describe failure modes (e.g., invalid LEI) or authorization requirements, so it is not a perfect 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every sentence adds functional value about tier characteristics, caps, or compliance rationale. It uses clear labels (ANONYMOUS, REGISTERED, VERIFIED) and a logical progression from simple to complex tiers. The length is justified given the regulatory complexity, though it could be slightly more scannable with explicit 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?
With 8 parameters, a nested mandate object, and an output schema, the description provides a comprehensive overview of the tool's behavior, including caps, legal basis, and verification process. It does not explain the return value structure (but the output schema likely covers that) and omits edge-case behavior, but for a registration tool with this complexity, 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 coverage is 100%, so the baseline is 3, but the description adds significant semantic meaning by mapping parameters to tier requirements: ownerEntity and ownerEmail are required for REGISTERED, ownerLei grants VERIFIED, and name is the only mandatory field. It also clarifies that mandate caps are clamped to tier limits for REGISTERED agents, which is not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name 'agent.kya_register' plus the description's detailed explanation of the three-tier KYA registration model make the tool's purpose unmistakable: registering an agent under KYA. It explicitly describes the outcome of registration (instant tier grants, caps, compliance inheritance) and is easily distinguished from the sibling 'agent.kya_verify', which presumably checks KYA status rather than creating it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use each registration tier: ANONYMOUS for instant low-cap registration, REGISTERED for higher caps with self-attested entity info, and VERIFIED for institutional caps via LEI. However, it does not explicitly state when not to use this tool or directly compare it with alternative tools like kya_verify, leaving room for ambiguity for an agent deciding between registration and verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent.kya_verifyARead-onlyInspect
Verify a registered DPX agent and receive a signed 1-hour credential. Returns KYA level, effective spend caps (tier or mandate), owner verification status, mandate active status, and FATF R.16 compliance attestation. Attach credential.signature as X-Agent-Credential header and agentId as X-Agent-Id header on DPX /settle requests — enables mandate enforcement, per-agent audit trail, and FATF attestation. Credential expires in 1 hour; call again to refresh before expiry.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | Agent ID from agent.kya_register (agt_...). |
Output Schema
| Name | Required | Description |
|---|---|---|
| mandate | No | Active mandate if present, null if expired. |
| kyaLevel | No | |
| kyaScore | No | |
| verified | No | |
| credential | No | agentId, issuedAt, expiresAt, mandateId, attestation (kyaLevel, ownerVerified, mandateActive, fatfCompliant, dailyCapUsd, maxNotionalUsd), signature |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations. It explains the credential's 1-hour expiry, the exact headers to attach, and the downstream effects (mandate enforcement, audit trail, FATF attestation). This is valuable and does not contradict the readOnlyHint=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 structured logically: purpose, return values, usage instructions, and expiry. It is detailed but every sentence provides necessary information. It is slightly long, but not wasteful, so a 4 is fitting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 nonetheless enumerates the key return fields, gives clear usage instructions, and covers the credential's lifecycle. It fully equips an agent to invoke and apply the result correctly, and it aligns with 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?
The input schema already fully describes the single parameter (agentId) with 100% coverage, including its format and origin. The description adds only implicit context (the agent must be registered), providing marginal added value beyond the schema. A baseline 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 the tool's verb ('verify'), resource ('registered DPX agent'), and outcome ('receive a signed 1-hour credential'). It goes beyond a simple label to define the tool's function, and it is distinct from the sibling tool 'agent.kya_register', which handles registration. The listed return values further clarify 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 explicitly states when to use the tool: before DPX /settle requests, with instructions to attach the returned headers. It also says to call again before expiry to refresh. However, it does not name alternatives or explicitly state when not to use it, so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent.mandate_createAInspect
Create or update an AP2-compatible spend mandate for a REGISTERED or VERIFIED DPX agent. Sets per-agent settlement constraints: max notional per settlement, daily cap, optional counterparty whitelist (LEIs or wallets), allowed currency pairs, ESG floor, and expiry. ANONYMOUS agents cannot hold mandates — register with ownerEntity + ownerEmail first. REGISTERED agents have mandate caps clamped to their tier limit ($25K). VERIFIED agents (GLEIF LEI confirmed) set their own caps with no platform ceiling. Mandate is AP2-formatted for interoperability with Google Agent Payments Protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | Agent ID from agent.kya_register. | |
| esgFloor | No | Min counterparty ESG score (0 = no floor). | |
| issuedBy | No | Organization issuing this mandate. | |
| expiresAt | No | Unix timestamp for mandate expiry. | |
| dailyCapUsd | Yes | Max USD per calendar day (UTC). | |
| currencyPairs | No | Allowed pairs e.g. ["USD|EUR"]. Empty = any pair. | |
| maxNotionalUsd | Yes | Max USD per single settlement. | |
| counterpartyWhitelist | No | LEIs or wallet addresses. Empty = any counterparty. |
Output Schema
| Name | Required | Description |
|---|---|---|
| agentId | No | |
| mandate | No | Full mandate object. |
| mandateId | No | Unique mandate ID (mnd_...). |
| ap2Compatible | No | |
| effectiveCaps | No | Actual caps after tier clamping. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are generic (readOnlyHint false, etc.), so the description carries the burden. It discloses key behaviors: anonymous agents are blocked, registered agents have caps clamped to $25K, verified agents have no ceiling, and mandates are AP2-formatted. It does not explicitly state overwrite behavior for updates, but it does add meaningful 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 dense paragraph that leads with the primary purpose and then efficiently lists settable constraints. It is not overly verbose, though it could be more structured with line breaks. Every sentence contributes useful 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 tool has an output schema (not shown) and 8 parameters with full schema descriptions, the description covers the essential context: eligibility, tier-based limits, and AP2 interoperability. It does not detail return values, but the output schema covers that gap. It is complete enough for an expert to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by tying parameters to the agent tier system (e.g., caps clamped vs. no ceiling) and clarifying the purpose of whitelist, currency pairs, ESG floor, and expiry. This enriches the schema descriptions without repeating them verbatim.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 or updates an AP2-compatible spend mandate for registered or verified DPX agents, with a specific verb and resource. It lists the constraints it sets, distinguishing it from sibling agent registration/verification tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: only for REGISTERED or VERIFIED agents, and explicitly states ANONYMOUS agents cannot hold mandates, requiring registration first. It implies alternatives (agent.kya_register) but does not explicitly exclude other settlement tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analytics.overviewARead-onlyInspect
Get live DPX performance analytics. Returns current stability score, ESG composite scores, live fee breakdown, oracle health across all data sources, and a settlement readiness assessment. Use for dashboards, reporting, and AI-driven monitoring of protocol health.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| fees | No | |
| esgScore | No | Protocol ESG composite score 0–100 |
| timestamp | No | ISO 8601 analytics timestamp |
| oracleHealth | No | Health status per oracle data source |
| stabilityScore | No | Current oracle stability score 0–100 |
| settlementReady | No | True if conditions are suitable for settlement |
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 behavioral context by specifying it returns 'live' data 'across all data sources' and lists specific metrics, giving agents a picture of output scope without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first identifies the verb and resource, the second lists outputs and use cases. No filler or redundancy; front-loaded with 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?
With an output schema present and read-only annotations, the description fully covers purpose, output content, and use cases. Given it has no inputs, the description is complete for an agent to select and invoke the 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 tool has zero parameters, so the empty input schema is fully covered and the description cannot add parameter-level detail. Baseline for zero-param tools is 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?
Description clearly states 'Get live DPX performance analytics' with a specific verb and resource, and enumerates returned metrics (stability score, ESG composite, fee breakdown, oracle health, settlement readiness). This distinguishes it as a high-level overview aggregator from more specific siblings like dpx.metrics and esg.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?
Explicitly states use cases: 'Use for dashboards, reporting, and AI-driven monitoring of protocol health.' This provides clear context for when to select the tool, though it does not mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_settleAInspect
Submit multiple settlements in a single call. Runs all settlements concurrently — one failure does not block others. Returns a summary (total/succeeded/failed) and per-item results mirroring what POST /settle would return. Maximum 50 per batch.
| Name | Required | Description | Default |
|---|---|---|---|
| settlements | Yes | Array of settlement request objects (same schema as the settle tool) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No | |
| summary | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations convey behavior beyond read-only/destructive hints (all false), so the description carries the burden. It discloses concurrency and partial-failure semantics ('one failure does not block others'), the return summary format, and the 50-item limit. This goes beyond the schema's maxItems by explaining runtime behavior, though it does not mention idempotency or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with a clear lead purpose, followed by behavioral and limit information. No wasted words; each sentence contributes distinct 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?
Description covers the core purpose, concurrency behavior, failure isolation, response summary structure, and batch limit. Given the presence of an output schema and simple single-parameter input, this is sufficient context for an agent to invoke correctly. It could be strengthened by explicit guidance on when to prefer it over a single settle call, but overall 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?
The schema already covers the single 'settlements' parameter with 100% description coverage, including item structure. The description adds the 50-item batch ceiling (also in schema as maxItems) and references the settle tool's schema, but no additional field-level meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Submit multiple settlements in a single call' with a specific verb and resource, clearly identifying a batch operation. It distinguishes itself from single-settlement siblings by calling out batching and referencing 'per-item results mirroring what POST /settle would return.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when multiple settlements need to be processed together via a single API call, with a clear batch context. It does not explicitly name single-settle alternatives or state exclusions, but the batching purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compliance.pep_screenARead-onlyIdempotentInspect
Screen an individual by name against the OpenSanctions PEP (Politically Exposed Person) dataset. PEPs include heads of state, senior government officials, senior executives of state-owned enterprises, senior politicians, senior military officers, judicial officials, and their close associates and family members. Returns match confidence, position/role, nationality, related entities, and an overall risk level (HIGH / MEDIUM / LOW / NONE). HIGH or MEDIUM matches require Enhanced Due Diligence (EDD) per FATF Recommendations 12 and 13 before settlement. Optionally filter by country.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Full name to screen (e.g. "Mario Draghi"). | |
| country | No | ISO-2 country code to narrow the search (e.g. "IT"). Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| matched | No | |
| matches | No | Per match: caption, datasets, position, nationality, birthDate, relatedEntities, riskLevel, matchScore |
| overallRisk | No | |
| totalMatches | No | |
| fatfCompliance | No | EDD required flag, FATF R.12/13 attestation, note |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds valuable context: the exact output fields (confidence, role, nationality, entities, risk level), the risk-level categories, and the FATF policy implication. 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 four sentences covering purpose, definitions, outputs, and policy. It is front-loaded with the main action and all sentences provide useful information. Slightly verbose in listing PEP categories, but each 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 covers the tool's purpose, input parameters, output contents, risk-level semantics, and policy implications. Combined with the rich annotations and output schema, it fully enables an agent to select and invoke the tool correctly. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. 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 already provides full descriptions for both q and country (100% coverage). The description only adds 'Optionally filter by country,' which is minimal additional meaning. Baseline 3 is appropriate since the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool screens an individual by name against the OpenSanctions PEP dataset, listing specific types of PEPs and returning risk levels. This distinguishes it from other compliance tools like compliance.ubo_chain or compliance.regulatory_calendar, 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 provides clear context for when to use the tool (PEP screening) and even specifies that HIGH/MEDIUM matches require Enhanced Due Diligence before settlement. It does not explicitly contrast with sibling tools, but the unique PEP dataset and policy trigger make usage expectations clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compliance.regulatory_calendarARead-onlyIdempotentInspect
Returns a structured calendar of upcoming and in-effect compliance obligations across MiCA (EU crypto-asset markets regulation), SFDR (Sustainable Finance Disclosure Regulation), CSRD (Corporate Sustainability Reporting Directive), the US GENIUS Act (payment stablecoin framework), and FATF Recommendations 15/16. For each event: framework, jurisdiction, requirement summary, effective date, impact level, and article reference. Also returns a DPX alignment section mapping each framework to the specific DPX endpoints that satisfy it. Use this before settlement workflow design, compliance gap analysis, or regulatory reporting.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| inEffect | No | Currently active requirements, most recent first |
| upcoming | No | Events not yet in effect, sorted by effective date ascending |
| dpxAlignment | No | Per-framework mapping to DPX endpoints that satisfy each obligation |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the tool read-only, idempotent, and non-destructive. The description adds valuable behavioral context by detailing the output fields (framework, jurisdiction, effective date, etc.) and the DPX alignment section, giving agents a clear expectation of the return value. It does not mention auth requirements or rate limits, but those are less critical given the read-only 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 four sentences, each earning its place: the core result, detailed output fields, the DPX alignment section, and specific use cases. It is front-loaded with the verb and resource, avoids redundancy, and is appropriately sized for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, clear annotations, and an output schema (as indicated), the description is complete. It covers all necessary aspects: what the tool returns, what data is included, and when to use it. There is no missing information that would leave an agent uncertain about invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so the baseline for parameter semantics is 4. The description appropriately does not need to explain any parameter meaning, and it does not attempt to, which is correct given the schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 structured calendar of compliance obligations across specific named regulations (MiCA, SFDR, CSRD, GENIUS Act, FATF). The verb 'returns' and the resource 'structured calendar' are explicit, and the listing of frameworks distinguishes it from sibling compliance tools like pep_screen and ubo_chain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 before settlement workflow design, compliance gap analysis, or regulatory reporting,' providing clear context for when to invoke the tool. It does not state when not to use it or mention alternative tools, so it lacks the full exclusion and alternative guidance seen in top-tier descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compliance.ubo_chainARead-onlyIdempotentInspect
Trace the beneficial ownership chain for any legal entity up to 3 levels deep using GLEIF relationship records, then screen every node in the chain against the OpenSanctions consolidated sanctions list (OFAC SDN, EU, UN, UK OFSI). Returns chain structure (SUBJECT → DIRECT_PARENT → ULTIMATE_PARENT), per-node sanctions status, LEI lapse flags, overall CLEAR / REVIEW_REQUIRED / BLOCKED verdict, and FATF R.16 beneficial ownership compliance attestation. Required for correspondent banking due diligence, FATF R.12/13 UBO identification, and MiCA Article 72 counterparty risk management.
| Name | Required | Description | Default |
|---|---|---|---|
| lei | Yes | 20-character GLEIF LEI of the entity to trace (e.g. "2594007XIACKNMUAW223"). | |
| deep | No | Set true to attempt 3-level traversal including intermediate nodes. Default false (direct + ultimate parent only). |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | No | Per-node: level, role, lei, entityName, country, leiStatus, sanctions (matched, score, datasets), riskFlag |
| fatfR16 | No | FATF R.16 beneficial ownership compliance attestation |
| riskFlags | No | Nodes with sanctions hits or lapsed LEIs |
| chainDepth | No | |
| overallStatus | No | |
| ultimateBeneficialOwner | No | lei, entityName, country, leiStatus of the UBO |
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, so the safety profile is clear. The description adds substantial behavioral context: the 3-level depth, data sources (GLEIF, OpenSanctions), output structure, verdict types, and FATF attestation. 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 a dense paragraph but well-structured: first sentence describes the action, second lists return values, third lists compliance contexts. It is appropriately sized for a complex tool and every sentence adds value, though slightly long for the simplest consumer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even with an output schema present, the description fully explains what the tool returns: chain structure, per-node sanctions status, LEI lapse flags, overall verdict, and FATF attestation. It also covers data sources, depth, and use cases, making it complete for a compliance 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?
The input schema already covers both parameters with 100% description coverage: 'lei' and 'deep'. The description mentions 'up to 3 levels deep' but does not directly clarify the 'deep' parameter beyond what the schema states. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Trace') with a clear resource ('beneficial ownership chain') and adds the screening component. It clearly distinguishes itself from sibling tools like compliance.pep_screen by focusing on entity chains and GLEIF data rather than individual PEP screening.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is required: correspondent banking due diligence, FATF R.12/13 UBO identification, and MiCA Article 72 counterparty risk management. It provides clear context but does not explicitly mention alternatives or when not to use it, 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.
compute.costARead-onlyIdempotentInspect
Get a model recommendation for a task type without running inference. Returns the best free model for the task, its strengths and speed tier, and a list of alternatives. Use this when an agent needs to select a model before committing to inference, or to surface model selection logic to a human. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Description of the task — e.g. "summarize a financial document", "write Python code", "translate from French", "reason through a math problem". | |
| speed | No | true = prefer fastest model over most capable. Default false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by noting it runs 'without running inference,' returns strengths/speed tier/alternatives, and is 'Free.' 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 two sentences, front-loaded with the main purpose. Every sentence adds value: what it returns, when to use it, and that it's free. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two parameters and no output schema, the description covers the return contents (best free model, strengths, speed tier, alternatives) and usage context. Complete enough for an agent to 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?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description does not add extra meaning beyond the schema (e.g., task examples are in schema). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get a model recommendation for a task type without running inference.' It specifies the resource (model recommendation), the action (get), and distinguishes from inference tools. The phrase 'best free model' and listing of alternatives adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: 'Use this when an agent needs to select a model before committing to inference, or to surface model selection logic to a human.' It does not explicitly name alternative sibling tools like compute.models or compute.route, 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.
compute.modelsARead-onlyIdempotentInspect
List all AI models available through DPX Compute. All models are free-tier (no token cost) — routed via OpenRouter. Returns model IDs, provider, capability strengths, context window, and speed tier. Use this before compute.route to understand what models are available and pick the right one for a task. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No 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, so the safe read-only nature is covered. The description adds meaningful behavioral context by specifying that all models are free-tier, routed via OpenRouter, and by detailing the fields returned. This goes beyond basic annotations, though it omits potential details like pagination or rate limits, which are not critical for a simple list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action, followed by cost/routing details, return fields, and usage guidance. Every sentence provides valuable information 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?
For a simple, parameterless list tool, the description fully covers what is returned, the routing context, the cost implication, and how to use it before compute.route. It is complete given the lack of params and 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?
There are zero parameters, and schema coverage is 100% (no params to document). The description therefore cannot add parameter semantics, but the baseline for zero-param tools is 4. The description does enrich understanding of what the tool outputs, which partially compensates for any lack of param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 specific verb and resource: 'List all AI models available through DPX Compute.' It clearly distinguishes this tool from siblings like compute.route (routing) and compute.cost by focusing on model discovery and providing details like 'model IDs, provider, capability strengths, context window, and speed tier.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance is provided: 'Use this before compute.route to understand what models are available and pick the right one for a task.' This names a specific sibling and gives a clear when-to-use directive. It also notes that models are free-tier, which affects cost-related decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute.routeAInspect
Route a task to the best available free AI model and run inference. DPX selects the model based on the task type (reasoning → DeepSeek R1, code → Llama 3.3 70B, multilingual → Qwen 2.5 72B, fast → Llama 3.1 8B), calls OpenRouter, and returns the completion. All models are free-tier — no token cost. Pay per call in USDC via x402. Use this when an agent needs to delegate a subtask to a language model without managing model selection or API keys.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Plain-language description of what the model should do. Used for model selection. | |
| messages | No | Optional. Full message array in OpenAI format [{role, content}]. If omitted, task is sent as a user message. | |
| preferSpeed | No | true = use the fastest available free model regardless of task type. Default false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=false and idempotent=false, but the description adds valuable context: it calls OpenRouter, has a payment mechanism in USDC via x402, and returns the completion. These details go beyond the annotations and help the agent understand side effects and 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 two sentences, front-loaded with the core purpose, and every sentence adds value. It covers purpose, model selection logic, external call, cost, and usage context without wasting 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 tool that invokes an external AI service with payment, the description is remarkably complete. It explains the routing algorithm, the external service (OpenRouter), cost model (free-tier but pay per call in USDC), return value, and appropriate use case. No output schema exists, but the description adequately covers what the agent needs to know.
Complex tools with many parameters or behaviors need more documentation. 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 100% with good descriptions for each parameter, giving a baseline of 3. The tool description adds extra semantics by mapping task types to specific models (e.g., 'reasoning → DeepSeek R1') and explaining that preferSpeed overrides this. This enriches parameter 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 uses a specific verb and resource ('Route a task to the best available free AI model and run inference'), clearly distinguishing this from siblings like compute.cost and compute.models. It explains exactly what the tool does, including model routing and 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 explicitly states when to use the tool: 'Use this when an agent needs to delegate a subtask to a language model without managing model selection or API keys.' It provides clear context but does not explicitly mention when not to use it or name specific alternative tools, so it misses the full 'when/when-not/alternatives' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
computer_use.payADestructiveInspect
Complete a payment that Claude's computer use session has identified on screen — a checkout form, wire transfer UI, invoice approval, or vendor portal payment step. Call this instead of typing credentials into a UI. Describe what you see on screen, provide the amount and recipient, and DPX runs the full oracle gate → compliance screen → settlement flow. Returns a receipt. Use whenever computer use encounters a payment that would otherwise require human re-entry or approval.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Payment amount in USD as shown on screen | |
| purpose | Yes | Payment purpose — e.g. vendor-invoice, contractor-payment, subscription, procurement | |
| sandbox | No | Set false for live execution. Default: true | |
| screen_context | Yes | Describe what is visible on screen — the payment form, vendor name, invoice number, or UI context. Used for audit trail. | |
| counterparty_name | No | Vendor or payee name as shown on screen | |
| recipient_address | Yes | Recipient wallet address (0x...). If only bank/email visible, use settlement.nl instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| feeUsd | No | |
| netUsd | No | |
| reason | No | |
| status | No | |
| txHash | No | |
| decision | No | |
| aiDecision | No | |
| aiConfidence | No | |
| settlementId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the annotations by disclosing the multi-step flow: 'DPX runs the full oracle gate → compliance screen → settlement flow' and that it 'Returns a receipt.' This is useful behavioral detail. No contradiction with annotations (readOnlyHint=false, destructiveHint=true, openWorldHint=true) is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and every sentence earns its place: purpose, examples, key instruction, behavioral flow, and usage trigger. 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?
For a payment tool with output schema and annotations, the description covers the essential aspects: what it does, when to use it, what inputs to provide, the internal flow, and the return value. It could mention prerequisites (e.g., that it requires an active computer use session), but this is reasonably implied. The description is complete enough 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?
Schema coverage is 100%, so the baseline is 3. The description restates that the user should 'provide the amount and recipient' and 'Describe what you see on screen,' but does not add new meaning beyond the schema's already-detailed parameter descriptions (e.g., screen_context is 'Used for audit trail'). It does not compensate with additional semantic 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 opens with a specific verb+resource: 'Complete a payment' and immediately scopes it to computer use sessions with concrete examples (checkout form, wire transfer UI, invoice approval, vendor portal payment step). It also distinguishes this tool from typing credentials into a UI and from settlement.nl, making its purpose unmistakable among 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?
Explicit usage guidance is provided: 'Call this instead of typing credentials into a UI' and 'Use whenever computer use encounters a payment that would otherwise require human re-entry or approval.' It also gives an exclusion/alternative: 'If only bank/email visible, use settlement.nl instead.' This clearly indicates 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.
dpx.metricsARead-onlyIdempotentInspect
Live performance metrics for the DPX settlement infrastructure — pulled directly from production telemetry. Returns request volumes, error rates, growth trends, per-service breakdown, and spike analysis across all active DPX workers. Free — designed for investor due diligence, analyst queries, and Standard Metrics / portfolio management integrations. No auth required.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | Time window for metrics. "7d" = last 7 days, "30d" = last 30 days. Default: 30d. |
Output Schema
| Name | Required | Description |
|---|---|---|
| window | No | |
| peakDay | No | |
| summary | No | |
| services | No | |
| errorRate | No | |
| weeklyTrend | No | |
| dailyAverage | No | |
| totalRequests | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive hints. The description adds valuable context beyond annotations: data source (production telemetry), live nature, and no-auth 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?
Three concise, front-loaded sentences. First sentence states the purpose, second lists outputs, third covers use cases and auth. 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?
For a simple read-only metrics tool with a single optional parameter and an output schema, the description covers purpose, use cases, data source, auth, and pricing. It lacks mention of output structure, but that is covered by the output schema. Nearly 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 100% with a well-described optional `window` parameter including enum values and default. The description does not add parameter-level detail, but the schema fully handles it, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it returns live performance metrics for the DPX settlement infrastructure, listing specific metrics (request volumes, error rates, growth trends, per-service breakdown, spike analysis). This distinguishes it from sibling tools like analytics.overview by focusing on DPX-specific production telemetry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 mentions target use cases (investor due diligence, analyst queries, Standard Metrics integrations) and states it requires no auth, providing clear context. However, it does not mention when to prefer this over alternatives or any exclusions, 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.
esg.batchARead-onlyInspect
Screen up to 50 entities in a single call. Accepts LEIs or company names (GLEIF-resolved). Returns results ranked by composite ESG score descending — highest scoring counterparties first. Useful for portfolio-level compliance screening, supplier due diligence, and TMS pre-payment checks. Name resolution is slower than direct LEI input.
| Name | Required | Description | Default |
|---|---|---|---|
| leis | No | Array of LEIs to screen (fastest path — no GLEIF resolution needed). | |
| names | No | Array of company names to screen (resolved via GLEIF — slower, allows ≤3s per name). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| failed | No | |
| results | No | Entities sorted by composite score descending. Each item includes lei, entityName, score object, or an error note. |
| succeeded | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds valuable behavioral context: the 50-entity limit, the ranking by composite ESG score descending, and the speed trade-off between LEI and name inputs. 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?
Three sentences, front-loaded with the core action. Every sentence adds information: the batch capability, input types, ranking, use cases, and performance caveat. 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 batch screening tool with an output schema, the description covers the main behavior, use cases, and trade-offs. It could mention that at least one of leis/names should be provided, but the schema already leaves both optional and the description implies either 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 descriptions already document the two parameters well (LEIs fast, names resolved via GLEIF). The description adds meaning by clarifying the batch limit and the composite ESG ranking, which helps the agent decide how to use the parameters together.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 screens up to 50 entities in a single call, accepts LEIs or company names, and returns results ranked by composite ESG score. This specific verb+resource+scope distinguishes it from sibling tools like esg.lookup and esg.portfolio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 names use cases (portfolio-level compliance screening, supplier due diligence, TMS pre-payment checks) and provides a key caveat (name resolution is slower than direct LEI input). While it doesn't explicitly state when not to use it or name alternative tools, the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
esg.lookupARead-onlyIdempotentInspect
Resolve a company name, domain, or ticker to a LEI via GLEIF and return the full ESG score. Removes the need for callers to have a LEI. Returns Environmental (40%), Social (35%), and Governance (25%) pillar scores, composite 0–100, fee surcharge tier, and per-source breakdown (SEC EDGAR, OSHA, BLS SOII, EU E-PRTR, ESMA, World Bank WGI, GLEIF). Use when you have a company name but not a LEI.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Company name, domain, or ticker to look up (e.g. "Apple Inc", "siemens.com", "MSFT") | |
| country | No | ISO-2 country code to narrow results (e.g. "US", "DE"). Optional but improves match accuracy. | |
| narrate | No | Set true to include a 2–3 sentence plain-English compliance narrative generated by the AI synthesis layer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | No | |
| score | No | Full ESG score object with composite, environmental, social, governance, feeTier, feeSurcharge, sources, coverage |
| resolved | No | |
| narration | No | Plain-language compliance narrative (only when narrate=true) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only and non-destructive. The description adds valuable behavioral context beyond that: it specifies the resolution mechanism ('via GLEIF'), the exact pillar weights (40/35/25), and the return fields (composite score, fee surcharge tier, per-source breakdown). This transparency about what the tool returns and how it works is helpful and does not contradict 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 consists of just two sentences: the first states the action and output, the second provides usage guidance. It is front-loaded, with no redundant or filler content. Every sentence earns its place, making it 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?
Given that the tool has an output schema, the description does not need to detail return values, yet it still summarizes the key outputs (pillar scores, composite, fee surcharge tier, sources). It also addresses the context of when to use the tool and the purpose of the optional parameters. The description is complete for a lookup 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 100%, so the schema fully documents all three parameters. The description does not add any new meaning to the parameters beyond what the schema provides (e.g., the description does not clarify q's format or country's ISO-2 requirement; those are in the schema). Therefore, the baseline 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 the tool's function: 'Resolve a company name, domain, or ticker to a LEI via GLEIF and return the full ESG score.' It specifically names the resource (ESG score) and the action (resolve), and differentiates itself from siblings by stating 'Use when you have a company name but not a LEI,' which implies that tools like esg.score are for when a LEI is already available.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear usage condition: 'Use when you have a company name but not a LEI.' It also explains the benefit for the optional country parameter ('improves match accuracy') and outlines the output components. However, it does not explicitly name an alternative tool for when a LEI is already known, relying on sibling context instead, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
esg.portfolioARead-onlyInspect
Score an entire counterparty portfolio in one call (up to 200 entities by LEI or name). Returns portfolio-level composite E/S/G scores, tier distribution, aggregate fee surcharge impact in basis points, worst offenders (bottom 10% by composite), top performers, MiCA Article 72 ongoing monitoring status, and SFDR PAI flags. The canonical pre-settlement compliance check for treasury systems and TMS integrations.
| Name | Required | Description | Default |
|---|---|---|---|
| leis | No | LEIs to score (fastest — no name resolution). | |
| label | No | Optional label for this portfolio (e.g. "Q3 2026 Counterparties"). | |
| names | No | Company names to score (GLEIF-resolved). |
Output Schema
| Name | Required | Description |
|---|---|---|
| label | No | |
| entities | No | |
| portfolio | No | composite, environmental, social, governance, tier, avgFeeSurcharge, totalFeeImpactBps |
| compliance | No | micaArticle72, highRiskCount, sfdr flags |
| distribution | No | byTier counts, min, max, median |
| topPerformers | No | |
| worstOffenders | No | Bottom 10% entities with weakest pillar identified |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds transparency by enumerating the exact return categories (composite scores, tier distribution, fee surcharge impact, worst offenders, top performers, MiCA/SFDR flags) and the entity limit, which helps set expectations. It does not contradict annotations and provides useful behavioral context beyond 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 three sentences, each earning its place. The opening sentence states the core action and constraint. The second sentence lists key returns without excessive detail. The third sentence frames the tool's canonical use case. No fluff or redundancy; structure is clean 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 the output schema exists, the description doesn't need to detail every field, and it adequately covers purpose, limits, and return categories. However, it does not mention whether at least one of 'leis' or 'names' is required (schema lists all as optional), which could confuse agents about invoking with zero parameters. Minor gap in an otherwise complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds beyond the schema by clarifying that inputs are 'by LEI or name' (potentially implying mutual exclusivity) and introduces the 200-entity cap, which is not in the schema. It does not deeply explain the 'label' parameter, but the schema description already covers it, so the net contribution is positive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 functions as a portfolio-level ESG scorer, with a specific verb ('Score') and resource ('counterparty portfolio') and scope (up to 200 entities by LEI or name). It does not explicitly differentiate from sibling tools like esg.batch or esg.score, but the 'portfolio' focus and detailed returns make 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?
The description provides a clear usage context: 'canonical pre-settlement compliance check for treasury systems and TMS integrations.' It also specifies a hard limit (up to 200 entities) and input method (LEI or name). However, it does not explicitly mention alternatives or when NOT to use this tool, leaving room for ambiguity with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
esg.scoreARead-onlyIdempotentInspect
Get the live counterparty risk score (ESG-denominated) for a wallet address or the protocol default. Returns Environmental, Social, and Governance risk scores (0–100 each), composite weighted average, and the compliance-adjusted settlement fee percentage this score produces. Updated hourly from 6 institutional data sources: WorldBank, IMF, OECD, UN SDG API, ClimateMonitor, and SEC EDGAR. Required by EU SFDR Principal Adverse Impact reporting and CSRD financed emissions disclosure for institutional clients.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Wallet address (0x...) to score. Omit for protocol default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | No | ESG tier label |
| feePct | No | ESG fee percentage applied at settlement |
| social | No | Social score 0–100 |
| address | No | Scored wallet address or "default" |
| sources | No | Data sources used |
| esgScore | No | Composite ESG score 0–100 |
| updatedAt | No | ISO 8601 last update timestamp |
| governance | No | Governance score 0–100 |
| environmental | No | Environmental score 0–100 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already classify this as read-only, non-destructive, and idempotent. The description adds behavioral context: 'Updated hourly from 6 institutional data sources' and the exact output components (Environmental, Social, Governance scores, composite average, settlement fee percentage). 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 three sentences, front-loaded with the core purpose, followed by output composition and then data sources/use cases. Every sentence earns its place; 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 a simple optional input, clear annotations, and an output schema present, the description provides sufficient context: data freshness (hourly), authoritative sources, and regulatory use cases. The agent can confidently invoke the tool without needing return-value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the single optional address parameter clearly documented ('Wallet address (0x...) to score. Omit for protocol default.'). The description merely echoes this without adding parameter-specific syntax, edge cases, or format 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 the verb 'Get', the resource 'counterparty risk score (ESG-denominated)', and the scope 'for a wallet address or the protocol default'. It distinguishes from sibling tools like esg.batch and esg.portfolio by emphasizing 'live' and single-address scoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use: live, single-address ESG scoring, with explicit use cases (EU SFDR and CSRD compliance reporting). It does not explicitly mention alternatives or when not to use, but the single-address focus implies distinction from portfolio/batch tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
esg.trendARead-onlyIdempotentInspect
Get the historical ESG composite trend for a specific entity by LEI. Returns score history, trend direction (IMPROVING / STABLE / DETERIORATING), and delta over the requested window. Data accumulates each time the entity is scored via esg.lookup, esg.batch, or esg.portfolio. Useful for due diligence, MiCA Article 72 ongoing monitoring reports, and detecting counterparties whose ESG posture is degrading.
| Name | Required | Description | Default |
|---|---|---|---|
| lei | Yes | 20-character GLEIF LEI. | |
| days | No | Lookback window in days (7–365). Default 90. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lei | No | |
| days | No | |
| delta | No | Score change over the window (positive = improving) |
| trend | No | |
| current | No | |
| history | No | |
| baseline | No | |
| dataPoints | No |
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 value by explaining that data accumulates through other scoring tools and by detailing the return content (score history, trend direction, delta). This goes beyond the structured metadata and clarifies the data's provenance, which is useful 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 two sentences, front-loaded with the core action, followed by return details and use cases. Every sentence contributes value without redundant repetition of schema or annotation 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?
For a relatively simple tool with two parameters and an existing output schema, the description covers the purpose, data source behavior, return values, and practical applications. It is self-contained and provides enough context for an agent to decide when and how to invoke the tool. 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?
Both parameters (lei and days) are fully described in the schema with 100% coverage. The description only references 'by LEI' and 'requested window', neither adding meaningful detail beyond the schema. Since schema coverage is high, baseline 3 applies; the description does not substantially enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Get the historical ESG composite trend for a specific entity by LEI.' This clearly distinguishes it from sibling tools like esg.score (likely current score), esg.lookup, esg.batch, and esg.portfolio by focusing on historical trend data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete use cases: due diligence, MiCA Article 72 monitoring, and detecting degrading ESG posture. It also explains that data accumulates from esg.lookup, esg.batch, or esg.portfolio, which frames when this tool is relevant. Missing explicit 'when not to use' or direct sibling comparisons, 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.
esg.watchAInspect
Register an entity for ongoing ESG monitoring. DPX checks the score daily and fires a webhook when the composite score shifts by ≥ thresholdPoints. Satisfies MiCA Article 72 ongoing monitoring requirements. Returns a watchId for status checks and cancellation. Webhook payload includes previous/current score, delta, and tier change.
| Name | Required | Description | Default |
|---|---|---|---|
| lei | Yes | 20-character GLEIF LEI of the entity to monitor. | |
| webhookUrl | Yes | HTTPS URL to POST score change alerts to. Must be HTTPS. | |
| thresholdPoints | No | Fire webhook if composite score changes by ≥ N points. Default 5. Minimum 1. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lei | No | |
| watchId | No | UUID — use to check status (GET /esg/watch/:id) or cancel (DELETE /esg/watch/:id) |
| createdAt | No | |
| entityName | No | |
| baselineTier | No | |
| baselineScore | No | Composite score at registration (used as first comparison point) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations. It discloses that DPX checks daily, the threshold condition for webhook firing, the return value (watchId) for status checks/cancellation, and the webhook payload structure. This is rich behavioral context that the annotations (only hint flags) do not provide. 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?
Four sentences deliver purpose, mechanism, regulatory context, return value, and webhook payload without waste. The description is front-loaded with the core action and stays focused. Every sentence contributes value, making it concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 monitoring registration tool, the description covers the full lifecycle: registration, monitoring frequency, trigger condition, return identifier, and webhook behavior. The output schema exists, so detailed return formatting is not needed. Given the tool's complexity and good schema/annotations, the description is complete enough for an agent to 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?
Schema coverage is 100%, but the description adds meaningful context: it ties thresholdPoints to the trigger condition ('shifts by ≥ thresholdPoints'), explains webhookUrl's role in receiving alerts, and clarifies that the return watchId is for status/cancellation. This enhances understanding beyond the schema's basic field 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: 'Register an entity for ongoing ESG monitoring.' The specific verb 'register' plus the resource 'entity for ongoing ESG monitoring' distinguishes it from one-off lookup tools like esg.score or esg.lookup. It also mentions key behavioral details (daily checks, webhook) that further differentiate it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use: ongoing monitoring with daily checks and webhook triggers. It also cites a regulatory use case (MiCA Article 72), which helps the agent decide based on compliance needs. However, it does not explicitly mention alternatives or when not to use, though the sibling list makes the distinction implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fees.compareARead-onlyInspect
Compare DPX settlement cost against Stripe cross-border (5.4% + $0.30), Wise (0.40–1.50%), Ripple ODL (0.20–0.50%), Lightspark, SWIFT (2.00–5.00%), PayPal, and bank wire. Returns dollar savings vs each at the current DPX all-in rate (~2.035% typical). Also returns GENIUS Act and MiCA compliance status for each competitor.
| Name | Required | Description | Default |
|---|---|---|---|
| hasFx | No | Cross-currency? Adds 0.40% FX fee. | |
| esgScore | No | ESG score 0–100 | |
| amountUsd | Yes | Settlement amount in USD |
Output Schema
| Name | Required | Description |
|---|---|---|
| dpx | No | |
| note | No | Context note on comparison methodology |
| amountUsd | No | Settlement amount compared |
| comparison | No | Per-competitor comparison keyed by competitor ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral context: it mentions that rates are 'current' and 'typical', indicating variability, and that it returns compliance status in addition to savings. This goes beyond the annotation baseline without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph, front-loaded with the main purpose, and contains no filler. While the list of competitors is long, every item provides useful rate information, and the return values are specified. It is appropriately sized 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?
With an output schema present, return values need not be detailed, and annotations cover safety. The description covers the core functionality, competitor set, and compliance outputs, making it sufficient for an agent to decide when to use it. It does not discuss edge cases like rate volatility or input validation, but these are not critical given the schema and 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 100%, with each parameter (amountUsd, hasFx, esgScore) already described clearly. The description does not add parameter-specific details beyond the schema, but it does provide overall context that helps infer how parameters might influence the comparison, which aligns with the 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 uses a specific verb 'Compare' with a clear resource (DPX settlement cost) and specific competitors, making its function unambiguous. It clearly distinguishes itself from siblings like fees.schedule and fees.verify by focusing on comparison rather than schedule lookup or verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when comparing DPX costs against alternatives) and what it returns, but it does not explicitly state when not to use it or mention alternative tools for other purposes. The context is clear, but exclusions and alternatives are not addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fees.scheduleARead-onlyIdempotentInspect
Get the complete DPX fee schedule: all components (core/FX/ESG/license), volume discount tiers (Standard / Growth / Institutional / Sovereign), ESG fee table by score, scenario examples, and competitive benchmarks vs Stripe, Wise, SWIFT, and bank wire.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| fees | No | Fee component definitions |
| tiers | No | Volume discount tiers |
| examples | No | Fee calculation examples |
| benchmarks | No | Competitor fee benchmarks |
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 the safety profile. The description adds useful behavioral context by emphasizing 'complete' fee schedule, implying a comprehensive snapshot without filtering or pagination. 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 a single well-structured sentence, front-loaded with the main verb and resource. It efficiently packs a detailed list of contents using a colon and comma-separated items, with no wasted words or redundant information. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool, the description is highly complete. It covers all major aspects of the fee schedule: core components, volume tiers, ESG fee table, scenario examples, and competitive benchmarks. An output schema exists, so return value details are not needed in the description. This is 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 tool has zero parameters, so the schema fully covers parameters (100% coverage) and the description cannot add parameter semantics. Per the rubric, baseline is 4 for zero-parameter tools. The description does not need to explain parameters that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 with a specific verb ('Get') and resource ('complete DPX fee schedule'). It enumerates the exact contents (components, tiers, ESG table, benchmarks), which distinguishes it from sibling tools like fees.compare (likely comparison-focused) and fees.verify (likely verification-focused).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: when you need the complete DPX fee schedule with all components and benchmarks. However, it does not explicitly mention alternatives or when not to use it, such as whether fees.compare should be used for specific comparisons. Lacks exclusions but overall context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fees.verifyARead-onlyIdempotentInspect
Verify that the off-chain fee quote matches what the on-chain DPXSettlementRouter contract will charge. Returns feesMatch (true/false). Call after get_quote and before settle to confirm fee integrity.
| Name | Required | Description | Default |
|---|---|---|---|
| hasFx | No | Cross-currency settlement? | |
| esgScore | No | ESG score 0–100 | |
| amountUsd | Yes | Settlement amount in USD |
Output Schema
| Name | Required | Description |
|---|---|---|
| delta | No | Absolute difference in basis points |
| feesMatch | No | True if off-chain quote matches on-chain contract |
| onChainFee | No | |
| offChainFee | No | |
| recommendation | No | PROCEED | INVESTIGATE |
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. The description adds context about the on-chain contract name and the boolean return value, which goes beyond the 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?
Two sentences, zero fluff. The purpose, return value, and usage timing are all conveyed efficiently. Ideal structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the annotations cover safety, and the description provides workflow context and the return flag, the tool is thoroughly described. No gaps for the agent to get stuck.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description does not add any parameter-specific semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 that an off-chain fee quote matches the on-chain DPXSettlementRouter contract charge. It clearly distinguishes from siblings like fees.compare and fees.schedule by focusing on verification against the on-chain contract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 temporal guidance: 'Call after get_quote and before settle to confirm fee integrity.' This clearly communicates when to use the tool, though it does not explicitly name alternatives or exclusion criteria, 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.
flow_checkARead-onlyInspect
Single pre-flight call before settling. Runs oracle check, compliance screen, and stablecoin routing in parallel and returns a unified go/no-go decision. Replaces the 3-step oracle → screen → route loop. Returns: decision (PROCEED/HOLD/BLOCKED), recommended token, estimated net received, oracle score, compliance verdict, and a ready-to-use settleBody.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Destination currency code (default: USD) | |
| lei | No | Counterparty LEI for enhanced compliance check (optional) | |
| from | No | Source currency code (default: USD) | |
| amount | Yes | Settlement amount in source currency | |
| address | No | Counterparty wallet address for compliance screen (optional but recommended) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ready | No | True when decision is PROCEED |
| token | No | Recommended stablecoin (USDC, EURC, or USDT) |
| oracle | No | |
| decision | No | PROCEED | HOLD | BLOCKED |
| compliance | No | |
| settleBody | No | Ready to POST to /settle (null if BLOCKED or HOLD) |
| ttlSeconds | No | |
| estimatedNetUsd | No | Estimated net received after all fees |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations by revealing that it runs three checks in parallel, returns a unified decision, and includes a 'ready-to-use settleBody' – indicating the output is actionable. It also labels itself as a pre-flight call, implying no settlement execution. Annotations already declare readOnlyHint=true, so 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 just three sentences, starts with the core purpose, and every sentence adds information (purpose, alternative, return fields). No redundant 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?
The description covers the tool's role, internal operations, and return payload. With an output schema present, return values are fully documented. It could mention conditions for BLOCKED/HOLD outcomes, but the overall context is sufficient for an agent to select and invoke the 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?
All 5 parameters have descriptions in the schema (100% coverage), so the description doesn't need to explain them. However, the description doesn't add any parameter-specific guidance beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb phrase ('Single pre-flight call before settling') and clearly names the operations it performs (oracle check, compliance screen, stablecoin routing) and its output (unified go/no-go decision). It also distinguishes itself from the 3-step loop by explicitly saying it replaces that 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 states when to use it ('before settling') and that it replaces the 3-step oracle → screen → route loop, providing an alternative. It doesn't explicitly say when not to use it or mention alternative tool names, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forecast.calendarARead-onlyIdempotentInspect
Seasonal climate event calendar with commodity impact. Returns 12 critical annual windows (hurricane season, corn pollination, Brazil frost risk, Black Sea harvest, ENSO influence periods, etc.) sorted by urgency — active windows first, then by months until next occurrence. Each entry includes affected commodities, severity, and the agronomic basis.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| calendar | No | Seasonal events sorted by urgency — active events first |
| currentMonth | No | Current UTC month (1–12) for reference |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a safe read-only, idempotent operation. The description adds concrete behavior: exactly 12 windows, sorted by urgency (active first, then months until occurrence), and each entry's fields (commodities, severity, agronomic basis).
Agents need to know what a tool does to the 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 deliver a complete picture: what it is, what it returns, and how it's sorted, with no redundant 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's simplicity (0 params, output schema present) and rich annotations, the description fully covers the expected behavior and output structure. It is sufficient for an agent to 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?
The tool has zero parameters, so schema coverage is 100% trivially. The description appropriately omits parameter details; there is nothing for it to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'Seasonal climate event calendar with commodity impact', clearly identifying the tool's function. It specifies the output ('12 critical annual windows') and the domain (climate events with commodity impact), distinguishing it from generic forecast 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 context: use when you need the annual seasonal calendar. It doesn't explicitly name alternatives or exclusions, but the clear scope ('seasonal climate event calendar') gives sufficient context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forecast.commodity_outlookARead-onlyInspect
Climate-driven price pressure outlook for a commodity. Returns BULLISH/BEARISH/NEUTRAL signal with 30/60/90-day horizons, confidence score, per-region stressor breakdown, and current FRED price reference. Covers 11 commodities: WHEAT, CORN, SOYB, COFFEE, COCOA, COTTON, SUGAR, WTI, NG, COPPER, LUMBER. Designed for institutional research teams evaluating commodity positions. Signals reflect supply constraint risk from climate — not a financial recommendation. Cache: 4h.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | true = bypass 4h cache and recompute live signals | |
| symbol | Yes | Commodity symbol |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| signal | No | |
| symbol | No | |
| regions | No | Per production-region climate scores and drought/temperature readings |
| horizons | No | 30d / 60d / 90d — each has signal, confidence, basis |
| reasoning | No | Plain-language synthesis of climate signals and price implications |
| stressors | No | Active climate stressors with severity, region, price impact estimate, probability |
| confidence | No | Signal confidence 0–1 |
| climateScore | No | Supply constraint pressure 0–100; >65 = elevated bullish pressure |
| currentPrice | No | Latest FRED price reference (value, unit, date) |
| forecastedAt | No | |
| recommendation | No | |
| inGrowingSeason | No | true = stressors in peak transmission window — act faster |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, but the description adds valuable behavior: a 4-hour cache, optional fresh recompute, coverage scope, and a disclaimer that signals are not financial recommendations. These go beyond what annotations provide, though auth/rate-limit details are absent.
Agents need to know what a tool does to the world before calling 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 core purpose, then efficiently covers output, coverage, target audience, disclaimer, and cache behavior. Every sentence earns its place, with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, full parameter schema, and existing output schema, the description is complete. It covers scope, output structure, cache semantics, target users, and risk disclaimer, leaving no significant gaps 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?
The input schema fully describes both parameters (symbol enum and fresh boolean), so the baseline is 3. The description adds context like the 4-hour cache and commodity coverage, which indirectly relates to the 'fresh' parameter, but it does not introduce new parameter-level semantics 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 it produces a climate-driven price pressure outlook for a commodity and specifies the exact output: BULLISH/BEARISH/NEUTRAL signal, 30/60/90-day horizons, confidence score, per-region stressor breakdown, and FRED price. This distinguishes it from sibling forecast tools by its commodity-specific signal focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context: 'Designed for institutional research teams evaluating commodity positions' and implies use when assessing climate-driven supply risk. It does not explicitly name alternatives or state when not to use, but the context is sufficient for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forecast.portfolio_stressARead-onlyInspect
Climate stress test for a multi-commodity portfolio. Pass up to 20 positions with weights (percentages or fractions — normalized internally). Returns aggregate portfolio climate score, which positions are most stressed, which could act as climate hedges, and a plain-language summary. Useful for commodity fund managers evaluating aggregate climate exposure before rebalancing.
| Name | Required | Description | Default |
|---|---|---|---|
| positions | Yes | Portfolio positions with symbol and weight |
Output Schema
| Name | Required | Description |
|---|---|---|
| summary | No | |
| positions | No | Per-position signal and climate score |
| dominantRisk | No | Most climate-stressed position |
| hedgeCandidates | No | Symbols with climateScore ≤ 35 — potential climate hedges |
| stressedPositions | No | Symbols with climateScore ≥ 65 |
| portfolioClimateScore | No | Weighted aggregate climate stress 0–100 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive. The description adds valuable behavioral context: weights are normalized internally, and the tool identifies hedges and returns a plain-language summary. 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?
Three sentences, all information-dense with no filler. The main action is front-loaded, followed by input constraints and output expectations, then the target use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and the description already covering input limits, normalization, and return value components, the tool is fully described for correct invocation. The description also gives the strategic context (pre-rebalancing evaluation), making it 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 100%, including the weight description and symbol enum. The description adds meaning by clarifying that weights can be 'percentages or fractions' and are 'normalized internally,' which reassures the agent about acceptable inputs beyond the schema's 'any positive number.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Climate stress test for a multi-commodity portfolio.' It clearly states what the tool does and what it returns (aggregate score, most stressed positions, hedges, summary), distinguishing it from single-commodity forecast tools like forecast.commodity_outlook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context: 'Useful for commodity fund managers evaluating aggregate climate exposure before rebalancing.' It implies the tool is for portfolio-level analysis, but does not explicitly name alternative tools or state when not to use it, 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.
forecast.production_regionsARead-onlyIdempotentInspect
All ~40 global commodity production regions ranked by current climate risk score. Each region shows which commodities it affects and its current climate risk level (HIGH/MODERATE/LOW). Use to identify which geographic zones are under active climate stress and which commodities are most exposed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| regions | No | Regions sorted by climate risk score, with affected commodities and risk level |
| updatedAt | No |
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 hints. The description adds useful context by mentioning the approximate count of regions (~40) and the categorical risk levels (HIGH/MODERATE/LOW), which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose. Every sentence provides distinct value: the data set, the fields shown, and the intended use case. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no parameters and an output schema, the description sufficiently covers what the tool returns and when to use it. It explains the risk levels and adds context about the number of regions, making it self-contained for the 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 parameters, so the baseline is 4. The description reinforces that no filtering is possible by saying 'All ~40 global commodity production regions,' which sets expectations appropriately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 all ~40 global commodity production regions ranked by climate risk score, and specifies the data provided per region (commodities affected and risk level). This distinguishes it from sibling forecast tools like forecast.commodity_outlook and forecast.scenario by focusing on geographic production regions and climate risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: 'Use to identify which geographic zones are under active climate stress and which commodities are most exposed.' It lacks explicit alternatives or when-not-to-use guidance, so it does not fully earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forecast.scenarioARead-onlyInspect
What-if climate scenario analysis. Apply a named scenario or custom stressor multipliers to any subset of commodities and see how signals shift. Built-in scenarios: la_nina_moderate, la_nina_severe, el_nino_moderate, gulf_hurricane_major, us_plains_drought_severe, black_sea_disruption, brazil_frost, chile_drought_copper, pacific_northwest_wildfire. Use to stress-test a commodity thesis before committing to a position.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | Symbols to analyze — omit for all 11 | |
| scenario | No | Built-in scenario ID — or omit and provide stressorOverrides | |
| stressorOverrides | No | Custom multipliers if not using a named scenario (1.0 = no change) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No | Per-commodity signal, climateScore, recommendation, topStressor, reasoning |
| scenario | No | |
| description | No | |
| portfolioImpact | No | mostImpacted, leastImpacted, averageClimateScore |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is established. The description adds context about applying scenarios, seeing signal shifts, and lists built-in scenario IDs. It does not cover return format, but that is handled by the output schema. 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 three sentences, front-loaded with purpose, includes a useful list of built-in scenarios, and ends with a usage recommendation. The scenario list is somewhat long but provides quick value to the agent. No wasted 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?
With a detailed input schema (100% coverage), output schema flag, and clear annotations, the description adds sufficient context: what scenarios exist, how to use them, and when to use the tool. It clarifies the either/or relationship between scenario and stressorOverrides. A complete package 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 description coverage is 100%, with clear descriptions for symbols, scenario, and stressorOverrides. The description adds little beyond the schema, only rephrasing 'custom stressor multipliers' and listing scenario names that already appear in the enum. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool as 'what-if climate scenario analysis' that applies named scenarios or custom stressor multipliers to commodities and shows signal shifts. It distinguishes itself from sibling tools like forecast.commodity_outlook and forecast.portfolio_stress by focusing on scenario stress-testing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: 'Use to stress-test a commodity thesis before committing to a position.' It does not explicitly name alternatives or when-not-to-use, but the use case is clear and specific enough for an agent to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx.corridorsARead-onlyIdempotentInspect
All 60+ currency corridors with current stability tier, daily volatility estimate, and regulatory flags. Sort is best-first (OPTIMAL → ADVERSE). Use to compare corridors before choosing a payment route — e.g. "which LATAM corridor is most stable for a $2M payment this week?" Filter by source currency with the from parameter. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Optional: filter to corridors starting from this currency (e.g. USD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| summary | No | Count by tier: OPTIMAL / FAVORABLE / CAUTION / ELEVATED_RISK / ADVERSE |
| corridors | No | Corridors sorted best-first with score, tier, vol, regulatory flags |
| corridorCount | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds valuable context: sort order (best-first), 'current' data, and 'Free'. 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?
Four sentences with no fluff: content, sort order, use case, and parameter hint are all conveyed efficiently. The first sentence is front-loaded with the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one-parameter list tool, the description covers purpose, usage, sorting, and filtering. Output schema exists to document return values, and annotations cover safety. 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?
The only parameter 'from' is fully described in the schema (100% coverage). The description briefly mentions filtering but adds no additional meaning or examples beyond the schema, so the baseline 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 the resource (all 60+ currency corridors) and attributes (stability tier, daily volatility, regulatory flags). It also conveys the purpose of comparing corridors, making it distinct from a single-corridor tool like stability.corridor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a concrete use case ('compare corridors before choosing a payment route') and an example query. However, it does not explicitly mention when not to use it or name alternative sibling tools, so it lacks full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx.cost_certaintyARead-onlyInspect
All-in settlement cost quote for cross-border payments. CFO-grade output: exact amount received in target currency after rail fees, 48h FX cost variance expressed in dollars, corridor stability overlay, and optimal execution window. Answers "if I send $X today, what does my counterparty receive net of everything, and how certain is that number?" Requires x402 micropayment.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target currency ISO 4217 (e.g. BRL) | |
| lei | No | Optional counterparty LEI for ESG-adjusted fee tier | |
| from | Yes | Source currency ISO 4217 (e.g. USD) | |
| amount | Yes | Amount to send | |
| amountCurrency | No | Currency of the amount (defaults to from) |
Output Schema
| Name | Required | Description |
|---|---|---|
| railFees | No | All-in fee breakdown in USD |
| settlement | No | Sent and received amounts with live FX rate |
| costCertainty | No | 48h volatility, uncertainty in USD, received range in target currency |
| corridorIntelligence | No | Corridor stability score, regulatory flags, cascade level |
| executionRecommendation | No | SETTLE_NOW / DELAY_24H / DELAY_48H with best execution window UTC |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly=true and destructive=false. Beyond that, the description adds meaningful behavioral context: it discloses the x402 micropayment requirement, the fee-inclusive nature of the quote, and the specific '48h FX cost variance' output. This enriches the agent's understanding 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 compact and front-loaded: the first clause states the tool's essence, followed by bullet-like output components and a concrete question. Every sentence adds value, and there is no repetition of schema or annotation 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 moderate complexity, the presence of an output schema, and read-only annotations, the description is complete: it covers the purpose, the key output fields, the settlement-certainty use case, and the payment prerequisite. No critical context is missing for 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?
Schema coverage is 100% with clear descriptions for all five parameters, so the baseline is 3. The description adds minimal param-specific detail beyond 'target currency' and 'source currency', but it does not introduce ambiguity. It earns a standard passing score, not higher, because the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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-plus-resource framing ('All-in settlement cost quote for cross-border payments') and clearly states the exact question it answers: 'if I send $X today, what does my counterparty receive net of everything?' It names concrete outputs (rail fees, FX variance in dollars, stability overlay, execution window), which distinguishes it from sibling tools like fx.rate or settlement.quote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the use case: when a CFO or counterparty needs a net settlement amount with certainty bounds. It also states a prerequisite ('Requires x402 micropayment'). It does not explicitly name alternatives or exclusions, but the context is strong enough for an agent to select this tool over rate-only or quote-only siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx.rateARead-onlyIdempotentInspect
Live mid-market FX rate for any currency pair. Returns mid rate, bid/ask spread, daily volatility %, regulatory flags for the corridor, and data freshness. Sourced from central bank rates (open.er-api.com, updated hourly, no API key required). Free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target currency ISO 4217 code (e.g. BRL) | |
| from | Yes | Source currency ISO 4217 code (e.g. USD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ask | No | |
| bid | No | |
| mid | No | Mid-market rate (from → to) |
| pair | No | |
| spreadPct | No | Implied interbank spread % |
| updatedAt | No | |
| corridorFlags | No | Regulatory flags for this corridor |
| dailyVolatilityPct | No | Estimated daily FX volatility % |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive; the description adds valuable behavioral context: data sourced from central bank rates via open.er-api.com, updated hourly, no API key required, and free. This goes beyond annotation coverage, though it does not mention rate limits or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver purpose, return fields, source, update cadence, and auth requirements with no fluff. The structure front-loads the core purpose, and even the standalone 'Free' sentence adds cost-related value, so 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?
For a simple two-parameter read-only tool with an output schema and complete parameter coverage, the description provides ample context: return fields, data provenance, freshness, and no-auth access. Minor gaps like rate limits or invalid-code behavior are acceptable given the low complexity and 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?
The input schema already documents both parameters with ISO 4217 examples at 100% coverage. The description's 'any currency pair' adds minor scope confirmation but does not enrich parameter semantics beyond what the schema provides, so the baseline 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 opens with a precise verb+resource: 'Live mid-market FX rate for any currency pair.' It explicitly lists the returned metrics (mid rate, bid/ask spread, daily volatility %, regulatory flags, data freshness), which clearly distinguishes it from sibling tools like fx.cost_certainty or market.fx.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 fetching live mid-market rates for arbitrary currency pairs, and notes no API key is required. However, it provides no explicit 'when to use' vs alternatives or exclusionary guidance, so the usage context is 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.
integration.statusARead-onlyIdempotentInspect
Check the status of a DPX integration verification session. Polls Base mainnet for receipt of the $0.01 USDC handshake payment. Returns "pending" until payment is detected on-chain, then "verified" with the txHash and a Basescan explorer link. Poll every 10–15 seconds after sending the payment.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | verificationId returned by integration.verify. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | Current verification state. |
| txHash | No | Transaction hash of the $0.01 payment. Present when verified. |
| message | No | |
| explorer | No | Basescan URL for the verification transaction. |
| verifiedAt | No | ISO timestamp of on-chain confirmation. Present when status is "verified". |
| walletAddress | No |
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 polling behavior, the on-chain detection on Base mainnet, the state transition from pending to verified, and the inclusion of txHash and Basescan link. This enriches the safe-read nature indicated by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no fluff. It front-loads the core purpose before adding behavioral details, making every sentence 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?
For a status-checking tool with an output schema, the description still adds valuable context: polling interval, on-chain payment detection, and the exact response states. This makes the tool fully self-contained for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already described as the verificationId returned by integration.verify. The description adds no extra parameter detail, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 checks the status of a DPX integration verification session, which is a specific verb and resource. It distinguishes itself from sibling tools like integration.verify by focusing on status polling after payment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instructs to poll every 10–15 seconds after sending the payment, which is precise timing guidance. It also implies the tool is used after integration.verify, establishing a clear use context without needing to name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
integration.verifyAInspect
Initiate a $0.01 USDC onboarding handshake for a new DPX integration. Returns the DPX treasury address and payment instructions. The client sends $0.01 USDC on Base mainnet to confirm their wallet is funded and settlement rails are clear. Call integration.status to poll for confirmation. Required for all new integrations before production settlements are enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Optional: the DPX API key being registered for this integration. Stored as a hash — never logged in plaintext. | |
| walletAddress | Yes | The client wallet address (0x...) that will send the $0.01 verification payment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | Always "pending" on creation. |
| payment | No | |
| polling | No | |
| expiresAt | No | ISO timestamp — verification window closes after 24 hours. |
| verificationId | No | Session ID — use with integration.status to poll for payment confirmation. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a state-changing operation (readOnly=false, not idempotent) and the description adds meaningful context: it returns the treasury address and payment instructions, confirms wallet funding and settlement rails via a $0.01 USDC transfer on Base mainnet. It doesn't warn about duplicate calls, but the non-idempotent hint is not contradicted, and the description adds 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?
Four sentences, each serving a distinct purpose: action, return value, client action, and follow-up step. No redundancy or fluff, and key information 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 output schema and annotations, the description is complete: it explains the purpose, the verification payment mechanics, the requirement before production, and the next polling action. No critical gaps for an initiating 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 input schema covers both parameters (walletAddress and optional apiKey) with 100% description coverage, including the hash storage note for apiKey. The tool description adds little new meaning beyond reinforcing that the walletAddress will send the verification payment, so the baseline 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 a specific action ('Initiate a $0.01 USDC onboarding handshake') and resource ('new DPX integration'), distinguishing it from sibling tools like integration.status (poll) and settlement tools by focusing on the pre-production verification 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?
Explicitly states when it is required ('Required for all new integrations before production settlements are enabled') and directs users to the alternative/next step ('Call integration.status to poll for confirmation'). This provides clear usage context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligence.aftershockARead-onlyIdempotentInspect
Aftershock Intelligence — models the secondary waves that follow a primary cascade event. Takes a primary shock (origin node, event type, magnitude, elapsed hours) and returns three aftershock waves: Wave 1 (0–72h immediate secondary effects), Wave 2 (1–4 weeks policy response distortions), Wave 3 (1–6 months structural changes now permanently locked in). Identifies which nodes are rebounding, which face amplified pressure, and which are structurally altered. Companion to market.cascade — run cascade first, then aftershock to see the full picture. POST with origin, eventType, magnitude, elapsedHours.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | Origin node ID from the primary cascade (e.g. "geo.conflict", "climate.drought"). | |
| eventType | No | Description of the primary event. | |
| magnitude | Yes | Primary shock magnitude 1–100. | |
| elapsedHours | No | Hours elapsed since the primary event. Default 24. | |
| horizonHours | No | Forward horizon to model in hours. Default 4320 (6 months). |
Output Schema
| Name | Required | Description |
|---|---|---|
| wave1 | No | Immediate (0–72h): rebound, amplified, structural nodes. |
| wave2 | No | Policy response phase (1–4 weeks). |
| wave3 | No | Structural lock-in (1–6 months). |
| synthesis | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond those: it defines the three aftershock waves with explicit time horizons (0–72h, 1–4 weeks, 1–6 months), what the model identifies (rebounding, amplified pressure, structurally altered nodes), and the expected HTTP method (POST). 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 front-loaded with the core purpose, then details the three wave outputs, then the companion workflow, and ends with a REST method reminder. Each sentence serves a distinct function: definition, output details, usage guidance, and input summary. It is informative without excess wordiness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 rich output schema, so the description does not need to detail return values. It explains the modeling logic, wave timing, and companion relationship, which gives an agent enough context to select and invoke the tool. It could mention typical error conditions or interpretation guidance, but the existing information is sufficient for a moderately complex predictive 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 100%, with all five parameters individually described. The description reiterates a subset (origin, eventType, magnitude, elapsedHours) but omits horizonHours, which the schema already documents. It adds minor context by framing them as components of a 'primary shock,' but does not significantly enhance beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'models the secondary waves that follow a primary cascade event.' It clearly distinguishes itself from market.cascade by positioning as a companion, and from other intelligence tools by focusing on aftershocks with three distinct wave phases. The purpose is unmistakable and behaviorally 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?
The description explicitly states when to use it: 'run cascade first, then aftershock to see the full picture,' providing a clear sequential relationship with market.cascade. It also lists required inputs ('POST with origin, eventType, magnitude, elapsedHours'), which implies prerequisites. However, it does not explicitly mention when not to use it or alternatives like intelligence.contagion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligence.contagionARead-onlyIdempotentInspect
Contagion Intelligence — simulates how a macro or financial shock spreads through 30 nodes across 6 domains (financial systems, real economies, commodity networks, policy anchors, social systems, physical infrastructure) using an epidemiological R-value model. Returns system R trajectory, per-epoch spread map, superspreader nodes, containment forecast, and AI briefing. R < 1.0 = self-limiting; R ≥ 1.0 = expanding. Call /contagion/nodes first to discover valid origin IDs. POST with origin and magnitude.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Origin node ID. Call intelligence.contagion with listNodes:true to discover valid IDs. | |
| listNodes | No | If true, returns all valid origin node IDs instead of running a simulation. | |
| magnitude | No | Initial shock magnitude 1–100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| systemR | No | System-level R value. ≥1.0 means spreading. |
| spreadMap | No | Per-epoch infection state across all nodes. |
| synthesis | No | |
| containment | No | Forecast of when/if containment is achieved. |
| superspreaders | No | Nodes with highest R contribution. |
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. The description adds meaningful behavioral details beyond this, including the R-value threshold interpretation (R<1.0 vs R≥1.0), the specific output components (spread map, superspreader nodes, containment forecast, AI briefing), and the need to first list nodes. 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 packed with needed information yet remains concise. It front-loads the title and model, then covers prerequisites and output. Every sentence serves a purpose, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description fully covers its purpose, model, domains, outputs, interpretation, and prerequisite actions. The presence of an output schema removes the need to detail return structures, and the description supplies all necessary context 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?
Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying the origin parameter's lookup mechanism ('Call /contagion/nodes first') and indicating that simulation requires 'origin and magnitude,' which complements the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's function: simulating how a macro/financial shock spreads through 30 nodes across 6 domains using an epidemiological R-value model. This is specific and distinguishes it from neighboring intelligence tools like 'aftershock' or 'resonance' by naming its unique model and outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is provided: 'Call /contagion/nodes first to discover valid origin IDs' and 'POST with origin and magnitude.' While it does not explicitly name alternatives or state when not to use the tool, the direction is sufficient for correct invocation and prerequisite steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligence.gender_riskARead-onlyIdempotentInspect
Gender Risk & Opportunity Intelligence — maps the structural relationship between GBV prevalence, legal discrimination, female labour force participation, and economic outcomes across 18 countries. Returns two independent scores: gbvRiskScore (0–100 suppression risk — high GBV → female LFPR suppression → GDP drag → fiscal stress → sovereign risk premium) and opportunityScore (0–100 reform upside — improving GBV indicators, closing LFPR gender gaps, and strengthening legal rights precede FDI inflows and consumer credit expansion). Five transmission mechanisms. Live FRED economic stress feedback. AI synthesis. Data: WHO GHO, World Bank WDI, FRED. 12h cache. No input required — GET.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| countries | No | Per-country: gbvRiskScore, opportunityScore, LFPR gap, WBL index, GDP per capita, transmission mechanisms. |
| synthesis | No | |
| regionalSummary | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, openWorld, idempotent, and non-destructive. The description adds valuable context beyond this: it discloses the two scores, transmission mechanisms, live FRED feedback, AI synthesis, data sources, and a 12h cache. 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, dense sentence containing a lot of information. It is front-loaded with the main purpose and then details. Slightly long, but every clause adds value—no fluff. Could potentially be split for readability, but it remains appropriately sized 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 and the presence of an output schema, the description covers all necessary context: the two scores, their economic rationale, data sources, cache behavior, and input requirements. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters and the description explicitly states 'No input required — GET.' This fully clarifies the parameter situation. Since there are no params, the description's statement is sufficient and adds clarity beyond the empty 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 'Gender Risk & Opportunity Intelligence' and clearly states it 'maps the structural relationship between GBV prevalence, legal discrimination, female labour force participation, and economic outcomes across 18 countries.' This is a specific verb+resource with clear scope, distinguishing it from sibling intelligence tools like aftershock or contagion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: no input required, GET method, and outputs two scores. It implies usage for gender-related risk and opportunity assessment. However, it does not explicitly name alternatives or state when-not-to-use, leaving some inference needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligence.resonanceARead-onlyIdempotentInspect
Resonance Intelligence — detects when multiple independent macro forces are oscillating in phase across 28 signals in 5 domains, amplifying each other rather than cancelling. A single shock is manageable; resonance turns a bad quarter into a systemic crisis. Returns per-signal phase angles, resonance clusters (groups of 3+ aligned signals), amplitude amplification factor, system resonance score (0–100), and historical danger-zone comparison to crisis precedents (2008, 2011, 2020, 1997 EM). No input required — GET.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| synthesis | No | |
| dangerZoneMatch | No | Similarity to historical crisis resonance patterns. |
| resonanceClusters | No | Groups of 3+ signals in mutual resonance. |
| amplificationFactor | No | Constructive interference gain across dominant cluster. |
| systemResonanceScore | No | 0–100. Higher = more dangerous in-phase alignment. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the readOnlyHint and other annotations by detailing the exact outputs: per-signal phase angles, resonance clusters, amplitude amplification factor, system resonance score, and historical danger-zone comparison. It also states 'No input required — GET,' making the operational behavior transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but every sentence contributes value: the core concept, the risk context, the return payload, and the no-input requirement. It is front-loaded with the main purpose and avoids 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 is fully self-contained: it explains the domain (28 signals, 5 domains), the interpretation of resonance, and all return fields. With an output schema present, it doesn't need to explain return values, but it does anyway, making it complete for the agent to select and invoke.
Complex tools with many parameters or behaviors need more documentation. 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 tool has zero parameters, and the description explicitly confirms 'No input required — GET.' This adds operational clarity beyond the empty schema, which is the baseline 4 for zero-parameter tools, and the explicit HTTP method is an additional helpful 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 identifies the tool's purpose: detecting when multiple independent macro forces oscillate in phase across 28 signals in 5 domains. It uses a specific verb ('detects') and resource ('resonance'), and the concept is distinct from sibling intelligence tools like aftershock, contagion, and tectonic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this tool: to identify systemic resonance where multiple shocks amplify each other rather than cancel. It contrasts resonance with manageable single shocks, implying the appropriate use case. It does not explicitly name alternative tools or exclusions, 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.
intelligence.subscribeAInspect
Register a webhook to receive alerts when a DPX intelligence signal crosses a threshold. Supported signals: stability (overall 0–100 score), cascade (shock propagation risk), macro_stress, climate, fx, or any. The cron checks hourly and fires the webhook on crossing — edge-triggered, not repeated every hour. Returns a subscriptionId for status checks and cancellation. Use for treasury alert systems, TMS integrations, or autonomous agent monitoring loops.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional label for your own tracking. | |
| signal | No | Signal to monitor. Default: stability. | |
| direction | No | Fire when signal goes above or below threshold. Default: above. | |
| threshold | Yes | Score value (0–100) that triggers the webhook. | |
| webhookUrl | Yes | HTTPS URL to POST alerts to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| signal | No | |
| deleteUrl | No | |
| direction | No | |
| statusUrl | No | |
| threshold | No | |
| currentScore | No | Signal score at registration time |
| subscriptionId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With minimal annotation hints (all false), the description carries the transparency burden. It discloses important behavioral traits: 'cron checks hourly and fires the webhook on crossing — edge-triggered, not repeated every hour' and 'Returns a subscriptionId for status checks and cancellation.' This adds significant value beyond the sparse annotations, though it omits details like payload format or error handling.
Agents need to know what a tool does to the world before calling 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 filler. It front-loads the primary purpose, then efficiently covers signals, triggering behavior, return value, and use cases. 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 presence of an output schema (which covers return values) and the sparse annotations, the description is remarkably complete. It explains the tool's function, supported signals, triggering mechanism, scheduling, return value, and intended use cases. No critical operational detail seems missing for an agent to decide when and how to invoke 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?
The schema already covers all parameters with descriptions (100% coverage), so the baseline is 3. The description goes beyond the schema by elaborating on signal meanings (e.g., 'stability (overall 0–100 score), cascade (shock propagation risk)') and the threshold-crossing behavior, enriching the semantics of 'signal' and 'threshold'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 a webhook to receive alerts when a DPX intelligence signal crosses a threshold.' It specifies the resource (DPX intelligence signals) and the action (webhook registration). While it does not explicitly contrast with sibling subscription tools, the different verbs and resources make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use cases: 'Use for treasury alert systems, TMS integrations, or autonomous agent monitoring loops.' This establishes when the tool is appropriate, but it does not mention when not to use it or offer alternative tools, such as intelligence.subscription.get or delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligence.subscription.deleteADestructiveIdempotentInspect
Cancel an intelligence subscription by ID. Stops future webhook alerts for that subscription. The alert log is retained for audit purposes.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | UUID returned by intelligence.subscribe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | No | |
| subscriptionId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds valuable context beyond this: it specifies that future webhook alerts stop and that the alert log is retained for audit purposes, which clarifies what is and isn't affected.
Agents need to know what a tool does to the 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 that front-load the core action and add only necessary detail (stopping alerts and log retention). 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 one-parameter tool and the presence of an output schema, the description covers the key behavioral aspects and side effects. It could mention irreversibility or prerequisites, but the annotations and schema fill most 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 input schema fully describes the only parameter, subscriptionId, as 'UUID returned by intelligence.subscribe'. The tool description merely says 'by ID', adding no new semantic meaning. With 100% schema coverage, the baseline 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 the action ('Cancel an intelligence subscription by ID') with a specific verb and resource. It distinguishes from sibling tools by noting it stops future webhook alerts, which is distinct from intelligence.subscribe and intelligence.subscription.get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context: canceling a subscription to stop alerts. It does not explicitly mention alternatives or exclusions, but the tool's purpose is unambiguous given the name and description, so the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligence.subscription.getARead-onlyIdempotentInspect
Check the status of an intelligence subscription by ID. Returns current signal score, last fired timestamp, total alerts fired, and subscription configuration. Use after intelligence.subscribe to verify a subscription is active.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | UUID returned by intelligence.subscribe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| signal | No | |
| direction | No | |
| lastScore | No | |
| threshold | No | |
| lastFiredAt | No | |
| lastCheckedAt | No | |
| subscriptionId | No | |
| totalAlertsFired | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the tool's safe read-only nature. The description adds valuable behavioral detail by listing the returned data (signal score, last fired timestamp, total alerts fired, and configuration), which goes beyond the schema and 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 long, front-loaded with the primary purpose, and includes essential usage guidance. 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 simplicity, the presence of a strong output schema, and clear annotations, the description covers purpose, usage, and return values sufficiently. It is complete 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 schema already provides 100% coverage with a description for subscriptionId ('UUID returned by intelligence.subscribe'). The tool description does not add further parameter details beyond mentioning 'by ID,' so the baseline 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 the tool's function: 'Check the status of an intelligence subscription by ID.' It also distinguishes itself from sibling tools like intelligence.subscription.delete by explicitly focusing on status verification and mentioning the return of configuration 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?
The description provides explicit usage context: 'Use after intelligence.subscribe to verify a subscription is active.' This gives clear when-to-use guidance, though it does not explicitly mention alternatives or when not to use the tool, which is acceptable given its specialized role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intelligence.tectonicARead-onlyIdempotentInspect
Tectonic Intelligence — maps slow-moving structural stress across 22 fault lines in 5 domains (demographic, fiscal, environmental, infrastructure, geopolitical). Each node carries current stress (0–100), accumulation rate (%/yr), tipping threshold, and estimated years to rupture. Where market.cascade traces an acute shock, tectonic surfaces latent pressure before it ruptures. Returns per-node stress state, rupture sequence, horizon timeline, and AI synthesis briefing. No input required — GET.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| synthesis | No | AI briefing on the most dangerous structural accumulations. |
| faultLines | No | Per-node: domain, label, stress, accumulationRate, yearsToRupture, tippingThreshold. |
| systemStress | No | Composite tectonic stress 0–100. |
| ruptureSequence | No | Ordered fault lines by proximity to rupture. |
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. The description adds beyond these by specifying it is a GET with no input and summarizing the return payload (per-node stress state, rupture sequence, horizon timeline, AI synthesis briefing). This provides useful context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, slightly longer than the two-sentence ideal, but every sentence adds meaningful detail: purpose, data fields, alternative differentiation, return summary, and input requirement. It is front-loaded and organized, with only minor redundancy in the detailed node fields (which may overlap with output schema).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless analytical read-only tool with an output schema, the description covers all necessary aspects: what it does, how it differs from a sibling, what data it returns, and that no input is needed. The presence of an output schema means return-value details are fully specified elsewhere, so the description is complete and self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters, the baseline is 4. The description explicitly clarifies 'No input required — GET,' which reinforces the empty schema and removes any ambiguity about needing arguments. Since there are no params to explain, this is appropriately sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'maps slow-moving structural stress across 22 fault lines in 5 domains.' It immediately distinguishes itself from sibling tool market.cascade by contrasting acute shocks with latent pressure, making its unique role obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 tool relative to market.cascade: 'Where market.cascade traces an acute shock, tectonic surfaces latent pressure before it ruptures.' This gives the agent clear guidance on when to choose this tool over an alternative, along with a direct 'No input required — GET' constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice.createAInspect
Create an agent-to-agent invoice. Agent A calls this to request payment from Agent B. Returns an invoiceId and payUrl — Agent B calls invoice.pay with the invoiceId to settle. Invoice expires after ttlSeconds (default 24h).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Invoice amount in source currency | |
| currency | No | Source currency code (default: USD) | |
| ttlSeconds | No | Invoice TTL in seconds (default: 86400 = 24h) | |
| callbackUrl | No | URL to notify when invoice is paid | |
| description | No | Human-readable payment description | |
| recipientAddress | No | Payee wallet address (can also be provided at pay time) | |
| destinationCurrency | No | Destination currency (default: same as currency) |
Output Schema
| Name | Required | Description |
|---|---|---|
| payUrl | No | Direct URL to pay this invoice |
| status | No | OPEN | PAID | EXPIRED |
| expiresAt | No | |
| invoiceId | No | UUID — pass to invoice.get or invoice.pay |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, etc.), the description discloses key behaviors: the creation side effect, the return values (invoiceId, payUrl), and the TTL expiration. This is useful context that annotations alone do not provide. 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, front-loaded with the core purpose followed by flow and return/expiry details. Every sentence carries meaningful information with 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 the primary flow, return payload, and expiry, and the output schema likely details exact return shape. It misses potential prerequisites (e.g., agent registration or mandate creation) suggested by sibling tools, but the core usage is well 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?
The schema describes all 7 parameters with 100% coverage, so the description does not need to explain each one. It does add context for ttlSeconds (default 24h) but does not elaborate on other parameters. This meets the baseline for high 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 the tool's purpose: 'Create an agent-to-agent invoice.' It specifies the actor (Agent A), the action (request payment), and the resource (invoice). It also distinguishes itself from sibling tools by naming invoice.pay as the counterpart for settling and invoice.get implicitly for retrieving.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: 'Agent A calls this to request payment from Agent B.' It names the alternative tool invoice.pay for settlement, clarifying when to use this tool versus the sibling. The expiration behavior is also mentioned, helping the agent understand the lifecycle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice.getARead-onlyIdempotentInspect
Retrieve an agent-to-agent invoice by ID. Returns status (OPEN/PAID/EXPIRED), amount, currency pair, and payUrl. Use before calling invoice.pay to confirm the invoice is still OPEN.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice UUID returned by invoice.create |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| amount | No | |
| payUrl | No | |
| status | No | |
| currency | No | |
| expiresAt | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behaviors. The description adds the concrete return data (status OPEN/PAID/EXPIRED, amount, currency pair, payUrl) and the intended pre-payment check, which is valuable 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?
Two focused sentences efficiently cover purpose, return data, and usage guidance. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one-parameter read tool with rich annotations and an output schema, the description covers the core action, expected return values, and the exact scenario the tool supports. No critical 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?
The schema fully documents the only parameter (invoiceId as a UUID from invoice.create), and the description simply refers to 'by ID.' With 100% schema coverage, the description adds little extra meaning, so a baseline 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 a specific verb ('Retrieve') and resource ('an agent-to-agent invoice by ID'), and distinguishes itself from sibling tools like invoice.create and invoice.pay by focusing on fetching rather than creating or paying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance on when to use this tool: 'Use before calling invoice.pay to confirm the invoice is still OPEN.' This names the exact alternative workflow and gives a clear condition, which is strong usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice.payAInspect
Pay an agent-to-agent invoice by ID. Retrieves the invoice, runs settlement via POST /settle, and marks the invoice PAID on success. In sandbox mode returns a simulated receipt; in live mode returns execution parameters for on-chain completion.
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox | No | True for sandbox simulation (default: false) | |
| invoiceId | Yes | Invoice UUID to pay | |
| recipientAddress | No | Payee wallet address (required if not set in invoice) |
Output Schema
| Name | Required | Description |
|---|---|---|
| invoiceId | No | |
| settlement | No | Full settlement result from POST /settle |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the internal sequence (retrieves the invoice, runs settlement via POST /settle, and marks it PAID) and explains mode-specific outcomes. This adds value beyond the annotations, which are all false and provide no safety hints. Minor gaps like error handling or prerequisites prevent a higher score.
Agents need to know what a tool does to the world before calling 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, front-loaded with the primary purpose, followed by the process and mode behavior. Every word is informative, with no redundancy or filler, making it exceptionally 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?
For a tool with an output schema and fully described parameters, the description provides sufficient context about purpose, process, and output modes. It lacks explicit error scenarios or prerequisites, but overall it is complete enough 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?
Schema coverage is 100% with descriptive parameter descriptions, so the baseline is 3. The description reinforces the sandbox/live distinction and mentions 'execution parameters' in live mode, but it does not add significant new meaning to individual parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 specifies the verb 'Pay' and the resource 'agent-to-agent invoice by ID', which distinguishes it from sibling tools like invoice.create and invoice.get. It also outlines the process steps (retrieve, settle, mark PAID), 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 provides clear context for when to use the tool (when paying an agent-to-agent invoice by ID) and explains sandbox vs. live mode behavior. However, it does not explicitly mention alternatives or exclusion conditions, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger.sessionARead-onlyIdempotentInspect
Get the aggregated payment graph for a multi-agent session. Returns total USD moved, transaction count, and a chronological list of all payments made during the session. Use for cost accounting, audit, or to show a human what an agent run spent.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session or task ID — the same ID used in receipt.create calls |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations by specifying the returned data ('total USD moved, transaction count, chronological list'). The annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only nature is established. The description complements rather than repeats this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by use cases. Every sentence earns its place with zero 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?
Given the tool's simplicity (one parameter, no output schema), the description fully covers purpose, usage, return, and context. It is complete and self-contained, requiring no further elaboration.
Complex tools with many parameters or behaviors need more documentation. 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 already provides 100% coverage of the single parameter with a descriptive explanation ('Session or task ID — the same ID used in receipt.create calls'). The description does not add further parameter semantics, so the baseline 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 the tool's function with a specific verb ('Get') and resource ('aggregated payment graph for a multi-agent session'). It also enumerates the exact return values (total USD, transaction count, chronological payment list), making it distinct from sibling tools like receipt.create or analytics.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?
The description provides explicit use cases: 'Use for cost accounting, audit, or to show a human what an agent run spent.' It also ties the session_id to receipt.create calls, giving integration context. However, it does not explicitly mention alternatives or when not to use, 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.
market.cascadeARead-onlyIdempotentInspect
Butterfly Effect Cascade Intelligence — models how a shock in one macro domain propagates through the interconnected web of climate, geopolitical, economic, and commodity systems. Given an origin event (e.g. armed conflict escalation, agricultural drought, central bank rate decision, rare earth export restriction) and a magnitude score, returns a time-ordered cascade chain showing which downstream systems are hit, in what sequence, with what attenuated signal strength, and an AI synthesis briefing on the highest-impact transmission paths. Covers 24 nodes across 4 domains: climate (drought, flood, carbon price, wildfire, sea-level stress, heatwave), geopolitical (sanctions, conflict, trade tariffs, regime change, election shock, port blockade), economic (rate decisions, inflation, sovereign debt, banking stress, currency crisis, recession), and commodity (oil, gas, grain, rare earth/lithium, copper, water, fertilizer). Purely macro intelligence — no settlement or stablecoin mechanics.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Origin node ID. Call market.cascade with listNodes:true to discover valid IDs (e.g. "geo.conflict", "climate.drought", "commodity.oil", "macro.rate_decision"). | |
| eventType | No | Free-text description of the specific event (e.g. "Russia-Ukraine escalation", "Sahel drought season", "Fed emergency 75bps hike"). | |
| listNodes | No | If true, returns all valid origin node IDs and descriptions instead of running a cascade. Use this first to discover valid origin values. | |
| magnitude | No | Shock magnitude 1–100. 100 = maximum plausible shock for this event type. 40–60 = significant but not extreme. | |
| horizonHours | No | Forward time horizon in hours (1–720). Default: 168 (1 week). Use 24 for immediate cascade, 720 for full 30-day view. |
Output Schema
| Name | Required | Description |
|---|---|---|
| origin | No | Origin node metadata. |
| cascade | No | Time-ordered propagation chain — each entry has node, magnitude, arrivalHours, via path, and mechanism. |
| eventType | No | Event description provided. |
| synthesis | No | AI intelligence briefing on transmission paths, concentrated risk, feedback loops, and forward signals. |
| computedAt | No | ISO timestamp of computation. |
| horizonHours | No | Time horizon modeled. |
| inputMagnitude | No | Clamped input magnitude. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds value by clarifying the output structure (time-ordered chain, attenuated signal strength, AI synthesis) and scope boundaries ('Purely macro intelligence — no settlement or stablecoin mechanics'). 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 efficient despite its length: it opens with the core purpose, then details inputs/outputs, enumerates domains and nodes, and closes with an important exclusion. Every sentence contributes 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?
For a complex tool with an output schema, the description is exceptionally complete: it explains input semantics, output structure, domain coverage, and boundary conditions. The output schema handles return details, and annotations cover safety, so no critical 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 coverage is 100%, with each parameter clearly described. The description adds some context around origin and magnitude (e.g., '40–60 = significant but not extreme') but does not substantially enhance the parameter understanding beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb+resource: models shock propagation and returns a time-ordered cascade chain. It distinguishes from siblings by emphasizing macro domains (climate, geopolitical, economic, commodity) and explicitly excluding settlement/stablecoin mechanics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (macro shock propagation analysis) and includes a list of example origin events. It lacks explicit alternatives or when-not-to-use guidance against siblings like intelligence.contagion or intelligence.aftershock, so it does not fully meet the 'explicit exclusions' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market.fxARead-onlyIdempotentInspect
FX Settlement Corridor Intelligence — per-pair execution risk assessment for 10 major currency corridors against USD: EUR, GBP, JPY, CAD, AUD, CHF, MXN, BRL, CNY, INR. Maps live FRED spot rates to settlement advice for each pair: SETTLE_NOW / SETTLE_WITH_HEDGE / DELAY_SHORT / DELAY_REVIEW / AVOID. Returns DXY dollar regime (STRONG_DOLLAR / NORMAL / WEAK_DOLLAR), regional block risk rollup (G4, Americas, Asia-Pacific), best corridors to settle through now, worst corridors to avoid or hedge, and recommended actions. Distinct from oracle.stability (which covers peg deviation and macro settlement gates) — this tool answers "which currency pairs are risky to settle through right now?" Data: FRED spot rates (DEXUSEU, DEXUSUK, DEXJPUS, etc.), DXY (DTWEXBGS). 1h cache.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| dxy | No | DXY value, trend, regime, and settlement impact summary. |
| corridors | No | Per-pair risk, spot rate, advice, and settlement cost. |
| overallRisk | No | FAVORABLE / NORMAL / MODERATE / HIGH / CRITICAL |
| bestCorridors | No | Pairs with NORMAL or FAVORABLE risk — settle now. |
| worstCorridors | No | Pairs with HIGH or CRITICAL risk — delay or hedge. |
| executiveSummary | No | Plain-language summary of FX settlement conditions. |
| recommendedActions | No | Actionable guidance for treasury teams. |
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 behavioral context beyond that by specifying data sources (FRED spot rates, DXY) and a 1h cache, which implies freshness and rate-limiting behavior. It does not contradict annotations, and the extra details are useful for setting expectations on data latency and availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but front-loaded with the core purpose and structured around outputs and data sources. It avoids redundancy, though it packs many details into a single paragraph. It earns its length given the complexity of the tool, but a slightly more structured layout could improve 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 the tool has no input parameters and an output schema exists, the description thoroughly covers what the tool does, what it returns, its data sources, cache behavior, and its relationship to a sibling tool. This is sufficient for an agent to select and invoke it correctly without needing further clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema coverage is trivially 100%. The baseline is 4 per the rubric. The description adds semantic context about the tool's purposeful zero-parameter design (a standardized assessment over fixed corridors), but since there are no parameters to document, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'FX Settlement Corridor Intelligence — per-pair execution risk assessment for 10 major currency corridors against USD.' It lists concrete outputs (SETTLE_NOW, DELAY_SHORT, etc.) and explicitly distinguishes itself from oracle.stability, 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?
The description gives explicit when-to-use guidance: 'this tool answers "which currency pairs are risky to settle through right now?"' and provides an alternative exclusion: 'Distinct from oracle.stability (which covers peg deviation and macro settlement gates).' This clearly directs an agent on when to choose this tool over a named sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market.shippingARead-onlyIdempotentInspect
Shipping & Logistics Stress Intelligence — composite view of global freight market conditions across ocean, air, truck, and rail. Tracks energy-driven shipping costs (Brent crude, diesel), 8 key global trade routes with disruption status, and trade flow signals. Returns a settlementRelevance section mapping logistics conditions to cross-border payment corridor risk: invoice delay risk, trade finance stress, and affected corridors. Useful for treasury teams with supply chain financing exposure, trade finance desks, and agents pricing cross-border payments on goods-backed corridors. Data: FRED (Brent crude), EIA (US diesel). 4h cache.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| regime | No | STABLE / MODERATE / ELEVATED / SEVERE_DISRUPTION |
| keyRoutes | No | Per-route disruption status and stress score. |
| synthesis | No | Narrative briefing on freight conditions and implications. |
| energyCost | No | Brent crude, diesel price, marine fuel proxy. |
| freightModes | No | Per-mode (ocean/air/truck/rail) cost index and stress signal. |
| compositeScore | No | Composite stress score 0–100 (higher = more stress). |
| settlementRelevance | No | Invoice delay risk, trade finance stress, affected corridors. |
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. The description adds substantial behavioral context beyond these: it lists specific tracked data points (Brent crude, diesel, 8 trade routes), describes the returned settlementRelevance section with risk categories, names data sources (FRED, EIA), and mentions the 4h cache. 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 appropriately sized for the tool's complexity. It is front-loaded with the core purpose, then details tracked data, return sections, target users, data sources, and cache in a logical sequence. Every sentence contributes 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?
For a composite market intelligence tool, the description is thorough: it covers what is tracked, what is returned, the risk mapping logic, data origins, and freshness. The output schema exists, so return values are structurally defined, but the description adds crucial context about the 'settlementRelevance' mapping and 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?
The schema has zero parameters, so the baseline is 4. The description doesn't need to explain inputs, but it adds value by detailing what data the tool aggregates, which indirectly clarifies the tool's scope. There are no parameter descriptions to evaluate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Shipping & Logistics Stress Intelligence — composite view of global freight market conditions across ocean, air, truck, and rail.' It names the specific resource (shipping/logistics) and the action (provides a composite view), distinguishing it from sibling tools like market.cascade and market.fx.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the intended audience and use case: 'useful for treasury teams with supply chain financing exposure, trade finance desks, and agents pricing cross-border payments on goods-backed corridors.' While it doesn't explicitly name alternatives or exclusions, it provides clear context for when this tool is relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mercury.accountsARead-onlyIdempotentInspect
List all Mercury bank accounts and balances connected to the DPX Settlement Agent. Returns account IDs, names, available balance, current balance, and currency for each account. Use account IDs with mercury.transactions to fetch payment history, or mercury.send to initiate a payment. Works with both Mercury sandbox and production environments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of accounts returned |
| total | No | Total balance across all accounts in USD |
| accounts | No | |
| environment | No | sandbox or production |
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 stating it works with both sandbox and production environments and detailing the return fields, which goes beyond the annotations. It does not mention rate limits, authentication, or edge cases, but the added environment and return info provides meaningful 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 three sentences, each earning its place: first states the purpose and return fields, second gives usage guidance, third notes environment support. It is front-loaded with the primary function and free of 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 simplicity (no parameters), the presence of an output schema, and rich annotations, the description is fully sufficient. It covers purpose, return values, sibling tool usage, and environment compatibility, leaving no gaps 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?
The tool has zero parameters, so the baseline score is 4. The description doesn't need to clarify parameter meaning, and it appropriately explains what the tool returns rather than repeating schema 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 the tool lists Mercury bank accounts and balances, with a specific verb 'List' and a specific resource. It also enumerates the returned fields (account IDs, names, available balance, current balance, currency), making the purpose unambiguous. It distinguishes from sibling tools by explicitly referencing mercury.transactions and mercury.send for subsequent actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 on how to use the tool: it says to use account IDs with mercury.transactions for payment history or mercury.send for payments, which serves as an alternative-use guideline. However, it does not explicitly state when NOT to use this tool or name exclusion conditions, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mercury.ach_authorizeADestructiveInspect
Screen an ACH payment through the DPX compliance oracle before execution. Runs FATF R16, GENIUS Act, MiCA, and AML checks against the recipient. Returns APPROVED / FLAGGED / BLOCKED with full compliance reasoning.
Use this tool BEFORE every ACH payment via mercury.send. ACH is hard to reverse — compliance pre-screening prevents blocked transactions and BSA/AML exposure.
Workflow:
mercury.ach_authorize (screen only, autoExecute:false) → review decision
If APPROVED → set autoExecute:true to send, or call mercury.send directly
If FLAGGED → manual review required before proceeding
If BLOCKED → do not proceed
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Payment memo / note (optional). | |
| amount | Yes | Payment amount in USD. | |
| purpose | No | Payment purpose category (optional — required by Mercury for domesticWire, recommended for ACH). E.g. "Vendor", "Contractor", "Expenses". | |
| accountId | Yes | Source Mercury account ID (from mercury.accounts). | |
| autoExecute | No | If true and compliance returns APPROVED, immediately sends the ACH payment. Default false — screen first, execute separately. | |
| recipientId | Yes | Mercury saved recipient ID (from mercury.send / POST /mercury/recipients). | |
| externalMemo | No | External memo / reference visible to recipient (optional). | |
| recipientName | Yes | Legal name of the recipient entity or individual — used for compliance screening. | |
| idempotencyKey | No | Idempotency key for safe retries. Auto-generated if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | No | Compliance tier — FAST_PATH, STANDARD, ENHANCED, or HOLD. |
| _next | No | Guidance on next action. |
| reason | No | Human-readable decision summary. |
| decision | No | Compliance decision. |
| executed | No | True if autoExecute:true and ACH was sent. |
| mercuryId | No | Mercury transaction ID (present when executed). |
| authorized | No | True if compliance approved the payment. |
| compliance | No | Full compliance oracle response including framework attestations. |
| requiresReview | No | True when decision is FLAGGED — manual review required. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that autoExecute:true will immediately send the payment, aligning with the destructiveHint annotation. It adds context about ACH irreversibility and BSA/AML exposure. Beyond annotations, it explains the decision outcomes and reasoning. No contradiction with annotations; the destructiveHint is properly expanded upon.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: purpose, usage, then workflow. It uses a numbered list for clarity. Every sentence contributes to understanding. Minor redundancy exists (autoExecute behavior appears in both workflow and parameter description), but the overall compactness is effective and 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?
Given the tool's complexity (9 params, output schema, annotations), the description covers the full decision lifecycle (screen, approved, flagged, blocked) and the workflow integration with mercury.send. It does not explain authentication requirements or error handling, but the provided context is sufficient for an agent 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?
Schema description coverage is 100%, so the baseline is 3. The description adds workflow context (autoExecute:false for screening, true for sending) and references where IDs come from (mercury.accounts, mercury.send), but the schema already describes each parameter adequately. The description does not add significant extra meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact purpose: 'Screen an ACH payment through the DPX compliance oracle before execution.' It lists specific compliance frameworks (FATF R16, GENIUS Act, MiCA, AML) and the decision outputs (APPROVED/FLAGGED/BLOCKED). It clearly distinguishes itself from sibling tools like mercury.send by positioning itself as the pre-screening step, not the send action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Use this tool BEFORE every ACH payment via mercury.send.' It also provides a numbered workflow that tells the agent exactly when to proceed with autoExecute, when to call mercury.send directly, and when to halt (FLAGGED/BLOCKED). This makes the tool's position relative to alternatives crystal clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mercury.sendADestructiveInspect
Initiate a Mercury bank payment from a connected account. Supports all Mercury payment rails: ACH (0–1 days), Wire (0–1 days), Real-Time Payment / RTP (instant), International Wire (1–3 days), and Check (7–10 days).
For International Wire — the primary DPX cross-border use case — provide SWIFT/BIC code and beneficiary bank details. DPX oracle conditions and FX corridor risk should be checked via oracle.stability and market.fx before executing.
Can optionally tag the payment for automatic DPX on-chain routing — when dpxRoute:true is set, the payment memo includes the DPX executor wallet address and the Mercury webhook picks it up for USDC settlement on Base mainnet.
Use sandbox:true (default) for dry-run testing. Set sandbox:false only when ready to move real funds.
Typical cross-border flow:
market.fx → check FX corridor risk for the destination currency
mercury.accounts → get source accountId
mercury.send (sandbox:true) → confirm payment parameters
settlement.quote → get DPX fee quote for the USDC leg
mercury.send (sandbox:false) → execute (requires explicit user confirmation)
mercury.transactions → verify payment posted
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Payment memo / description. | |
| amount | Yes | Payment amount in USD (or destination currency if specified). | |
| sandbox | No | Dry run — returns what would be sent without executing. Default: true. Set false to execute. | |
| bankCity | No | Beneficiary bank city. | |
| bankName | No | Beneficiary bank name (e.g. "Barclays Bank UK PLC"). | |
| currency | No | Destination currency for internationalWire (e.g. "GBP", "EUR"). Default USD. | |
| dpxRoute | No | If true, appends dpx:<wallet> to the memo — triggers DPX on-chain USDC settlement via the Mercury webhook. Use this to settle the stablecoin leg of a cross-border payment. | |
| accountId | Yes | Source Mercury account ID (from mercury.accounts). | |
| swiftCode | No | BIC/SWIFT code of beneficiary bank (required for internationalWire without recipientId). E.g. "BARCGB22" for Barclays UK. | |
| bankAddress | No | Beneficiary bank street address. | |
| bankCountry | No | Beneficiary bank country — ISO 3166-1 alpha-2 (e.g. "GB", "DE", "SG"). | |
| recipientId | No | Mercury saved recipient ID for internationalWire. Use this if the recipient is already saved in Mercury — skips inline bank detail fields. | |
| accountNumber | No | Recipient account number (required for ach/wire/check). Also used for IBAN on internationalWire. | |
| paymentMethod | No | Payment rail. rtp = Real-Time Payment (instant, US domestic). internationalWire = cross-border (1–3 days). Default: ach. | |
| recipientCity | No | Beneficiary city. | |
| recipientName | No | Recipient legal name (required for ach/wire/rtp/check). | |
| routingNumber | No | Recipient routing number (required for ach/wire/check). | |
| recipientEmail | No | Recipient email (optional — for payment notification). | |
| recipientAddress | No | Beneficiary street address. | |
| recipientCountry | No | Beneficiary country — ISO 3166-1 alpha-2. | |
| recipientPostalCode | No | Beneficiary postal code. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Mercury transaction ID (present when sandbox:false and executed) |
| note | No | Payment memo as sent |
| amount | No | Amount in USD |
| status | No | Transaction status from Mercury |
| sandbox | No | True if this was a dry run |
| dpxTagged | No | Whether the DPX routing tag was appended |
| simulation | No | Dry-run summary (present when sandbox:true) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations (destructiveHint=true, readOnlyHint=false), the description adds crucial behavioral context: sandbox defaults to true for dry-run; setting sandbox:false moves real funds and requires explicit user confirmation; dpxRoute:true triggers on-chain USDC settlement via a Mercury webhook. These details are not in the annotations and are essential for safe invocation. 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 appropriately sized for a complex tool: it opens with the core purpose, lists all rails, then covers sandbox, dpx routing, and a numbered workflow. Every sentence contributes unique information, and the structure (paragraphs plus a numbered flow) makes it easy to scan despite its length. No fluff or repetition beyond necessary emphasis.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 21 parameters, 5 rails, DPX integration, and an output schema, the description is complete: it covers the primary international wire use case, sandbox behavior, dpx routing, and prerequisite checks. The output schema exists, so the description need not explain return values. The workflow ties together related tools, making the tool's role in the larger system 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?
Schema description coverage is 100%, so the baseline is 3. The description adds semantic value by explaining the DPX cross-border use case for swiftCode and bank details, and by contextualizing sandbox and dpxRoute parameters beyond their schema descriptions. However, the additional value is modest since the schema already documents each parameter thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Initiate a Mercury bank payment from a connected account' and enumerates all supported rails (ACH, Wire, RTP, International Wire, Check) with settlement timelines. The verb 'Initiate' and resource 'Mercury bank payment' distinguish it from sibling tools like mercury.transactions (view), mercury.accounts (list), and mercury.ach_authorize (authorize).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, including a 'Typical cross-border flow' that sequences this tool with market.fx, mercury.accounts, settlement.quote, and mercury.transactions. It also directs the agent to check oracle.stability and market.fx before executing for DPX use cases, and clarifies when to use sandbox:true (dry-run) vs sandbox:false (real funds).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mercury.sweepARead-onlyIdempotentInspect
Treasury float yield routing analysis for idle Mercury bank balances. Computes how much can be swept above a reserve threshold, then evaluates whether deploying into sUSDS (Sky Protocol Savings Rate) on Base is viable before a settlement deadline.
THIS TOOL DOES NOT MOVE FUNDS. It returns a structured recommendation with expected net yield, deployment amount, exit timing, and step-by-step execution instructions. All fund movement decisions remain with the client.
Safety rules enforced: • Always keeps thresholdUsd in Mercury — never swept • Maximum 90% of sweepable amount deployed to sUSDS • Minimum 2-hour window required (shorter windows don't cover gas) • Minimum $50,000 sweepable (below this, gas costs exceed yield) • Exit triggered 30 minutes before settlement deadline
Current instrument: sUSDS (Sky Protocol) — instant on-chain entry/exit, ~6.25% APY, Base chain, no US person restrictions, no de-peg events on record.
Workflow:
mercury.accounts → get accountId and available balance
mercury.sweep → get yield recommendation and execution steps
If PROCEED → follow execution.steps to wire funds and deploy
mercury.accounts again at exit time → confirm balance restored
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox | No | If true, marks analysis as sandbox mode — Mercury balance may not reflect live state. | |
| accountId | Yes | Mercury account ID to analyze (from mercury.accounts). | |
| thresholdUsd | No | Minimum USD balance to always keep in Mercury as a reserve. Sweepable = available balance minus this amount. Default: $50,000. | |
| riskTolerance | No | Risk tolerance for yield deployment. Conservative requires APY > 5%. Default: moderate. | |
| settlementDeadlineUtc | No | ISO 8601 UTC timestamp of when funds must be back in Mercury (e.g. "2026-06-28T18:00:00Z"). Defaults to 7 days from now. Drives the yield window calculation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| account | No | Mercury account summary with available balance, reserve threshold, and sweepable amount. |
| execution | No | Step-by-step execution instructions (present when recommendation is PROCEED). |
| yieldAnalysis | No | Yield routing analysis: instrument, APY, expected net yield, window, and recommendation (PROCEED | HOLD). |
| risk_disclosure | No | Mandatory risk disclosure — client must acknowledge before acting. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint) already indicate safety, and the description goes beyond by detailing the non-moving-funds behavior, safety rules (reserve threshold, 90% cap, 2-hour window, exit timing), and instrument specifics. This adds substantial context beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but efficiently structured with a clear lead sentence, bolded safety warning, bulleted rules, and a numbered workflow. Every sentence adds useful information, and the all-caps 'THIS TOOL DOES NOT MOVE FUNDS' is front-loaded and impactful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 purpose, safety constraints, workflow, and parameter context. The output schema exists to explain return values, so the description need not repeat that. A minor gap is not explicitly naming which sibling tool (e.g., mercury.send) should be used for actual fund movement, but the workflow implies following execution steps.
Complex tools with many parameters or behaviors need more documentation. 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 100% with each parameter described. The description reinforces meaning by explaining the relationship 'Sweepable = available balance minus this amount' and adding constraints like the $50,000 minimum and the settlement-deadline-driven yield window. It adds value beyond the schema without being redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource+scope: 'Treasury float yield routing analysis for idle Mercury bank balances' and details what it computes. It distinguishes from siblings by explicitly stating 'THIS TOOL DOES NOT MOVE FUNDS', clearly separating it from mercury.send and mercury.ach_authorize.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 use: idle Mercury balances, a settlement deadline, and minimum thresholds (2-hour window, $50,000 sweepable). The workflow outlines prerequisites (mercury.accounts) and downstream actions. However, it does not explicitly name alternative tools or state when not to use it beyond the safety minimums.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mercury.transactionsARead-onlyInspect
List recent transactions for a Mercury bank account. Returns transaction ID, amount (USD), status, note/memo, counterparty name, created date, and whether the transaction was DPX-tagged (memo contains "dpx:"). Filter by account ID obtained from mercury.accounts. Use this to reconcile DPX settlements against Mercury bank activity.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of transactions to return (default 20, max 500). | |
| offset | No | Pagination offset (default 0). | |
| accountId | Yes | Mercury account ID (from mercury.accounts). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | Total number of transactions on this account |
| accountId | No | |
| transactions | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is already known. The description adds valuable context about the DPX-tag convention (memo contains 'dpx:') and the exact fields returned, which is more than a minimal read operation. It does not disclose all potential behavioral nuances (e.g., ordering, time window), but annotations cover the key safety aspects.
Agents need to know what a tool does to the world before calling 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 primary action, and each clause adds value: the listing action, returned fields, DPX tag explanation, and the intended use case. There is no wasted wording or 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?
With an output schema present and strong annotations, the description covers the essential context: what the tool returns, why it exists (DPX reconciliation), and a prerequisite (account ID). It is slightly vague on the meaning of 'recent' and does not describe pagination behavior, but these are less critical given the schema and 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 100%, so the schema already fully documents all three parameters. The description reuses the same accountId guidance ('from mercury.accounts') without adding new parameter nuance. Limit and offset are only described in the schema, not in the description, so the description adds no extra parameter semantics 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 states a specific action: 'List recent transactions for a Mercury bank account.' It clearly identifies the resource (Mercury bank account) and returns a defined set of fields. It distinguishes itself from siblings like mercury.accounts and mercury.send by focusing on transaction listing, with additional specificity around DPX-tagged memos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Use this to reconcile DPX settlements against Mercury bank activity,' providing a clear use case. It also instructs to obtain accountId from mercury.accounts, which guides the prerequisite. However, it does not mention when not to use it or suggest alternatives, so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oracle.governanceARead-onlyIdempotentInspect
Get the live governance score (0–100) for any legal entity identified by LEI or company name. Pulls from GLEIF (LEI registration status, renewal compliance) and World Bank Worldwide Governance Indicators (Government Effectiveness, Control of Corruption, Rule of Law). Returns composite governance score, tier (STRONG / ADEQUATE / MODERATE / WEAK / POOR), MiCA compliance flag, and per-source component breakdown. Complements esg.score by isolating the G pillar as a standalone institutional-grade signal.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Company name to resolve via GLEIF if LEI is unknown (e.g. "Siemens AG"). | |
| lei | No | 20-character GLEIF LEI. Provide this for fastest response. | |
| country | No | ISO-2 country code for World Bank WGI lookup (e.g. "DE", "US"). Optional but improves score accuracy. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lei | No | |
| tier | No | |
| country | No | |
| sources | No | |
| scoredAt | No | |
| composite | No | Governance score 0–100 |
| components | No | Per-source breakdown: gleif (LEI status, renewal) and worldbank (WGI indicators) |
| entityName | No | |
| mikaCompliant | No | True if composite ≥ 60 (MiCA Article 72 threshold) |
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 the safety profile. The description adds valuable behavioral context by detailing data sources (GLEIF, World Bank WGI) and output components (composite score, tier, MiCA flag, breakdown), going 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 sentences, front-loaded with the primary action, and compactly lists data sources, return values, and relationship to a sibling tool. Every clause adds informational value with no fluff 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 moderate complexity (external data sources, composite scoring), the description covers the return fields and data origins. An output schema exists for structured details, so not explaining every return value is acceptable. It could mention data freshness or limitations (e.g., WGI annual updates) but 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 100%, so all three parameters are already well-documented. The description merely paraphrases the existing param info ('LEI or company name' for q/lei) and does not add new semantic details beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the live governance score (0–100) for any legal entity identified by LEI or company name.' It uses a specific verb, identifies the resource (governance score), and distinguishes itself from siblings by explicitly mentioning it complements esg.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 on when to use the tool by explaining it 'Complements esg.score by isolating the G pillar as a standalone institutional-grade signal.' This implies the tool is for standalone governance assessments rather than full ESG scoring, though it does not explicitly state exclusions or alternative use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oracle.myceliumARead-onlyIdempotentInspect
Mycelium Network Oracle — models the global financial system as a living network and detects crisis formation from network topology before it surfaces in market data, typically 6–14 weeks ahead. Maps nodes (markets, economies, funding markets), threads (capital flow channels, correspondent banking, trade finance), nutrient flow (liquidity), stress signals (spread widening, FX stress), and dead zones (sanctioned corridors, failed correspondent networks). Returns network health score (0–100), regime classification (HEALTHY / THINNING / STRESSED_CONNECTIVITY / DEAD_ZONE_FORMING / FRUITING_BODY_IMMINENT), node-by-node connectivity, thread health, signal propagation speed, and fruiting body risk — the probability of a visible crisis with estimated lead time in weeks. Data: FRED (funding markets, credit spreads), BIS SDMX API (credit-to-GDP gaps), IMF DOTS (bilateral trade volumes). The only oracle that reads network topology rather than individual metrics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| nodes | No | |
| regime | No | Network regime classification. |
| threadHealth | No | |
| networkHealth | No | Composite network vitality score 0–100. |
| fruitingBodyRisk | No | |
| networkNarrative | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, setting a safe read-only expectation. The description adds valuable behavioral context beyond annotations: the typical forecast lead time, the regime classification output, the specific data sources, and the fact that it returns network health scores and fruiting body risk. It does not mention latency, cost, or auth, but with rich annotations, this is sufficient.
Agents need to know what a tool does to the world before calling 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 dense paragraph that front-loads the main purpose, then details outputs and data sources. Each sentence adds meaningful information, with no filler. It is slightly long but well-structured and 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 output schema exists (so return format is covered elsewhere), the description provides comprehensive context: what the tool models, the specific outputs (health score, regimes, nodes, threads, etc.), the lead time, the underlying data sources, and its unique positioning among oracles. For a read-only, zero-parameter tool, 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?
The tool has zero parameters and schema coverage is 100%, so the description cannot add parameter-level details. The baseline for 0 params is 4, and the description does not need to compensate for any 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 clearly states the tool's verb+resource: it models the global financial system as a network and detects crisis formation from network topology. It also distinguishes itself from sibling oracles by emphasizing that it reads network topology rather than individual metrics, and mentions a unique lead time (6–14 weeks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 about what the tool does and its data sources. It implies an alternative approach ('rather than individual metrics'), which hints at when to choose this oracle over others, but it does not explicitly name alternative tools or state explicit when-to-use/when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oracle.railsARead-onlyInspect
Get live health status of local payment rails relevant to a settlement. Returns per-rail status (OPERATIONAL/DEGRADED/DOWN), latency, last incident, and a composite health score. Key rails: PIX (Brazil), SEPA (Europe), FedACH (US domestic), CHAPS (UK), UPI (India), PromptPay (Thailand). Call this before domestic or regionally-specific settlements to confirm the destination rail is healthy.
| Name | Required | Description | Default |
|---|---|---|---|
| rails | No | Specific rails to check: 'PIX', 'SEPA', 'FedACH', 'CHAPS', 'UPI', 'PromptPay'. Omit for all. | |
| region | No | Filter by region: 'latam', 'europe', 'us', 'asia', 'uk'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rails | No | Per-rail status map |
| timestamp | No | ISO 8601 timestamp |
| healthScore | No | Composite rail health score 0–100 |
| recommendation | No | Settlement recommendation based on rail health |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to state it's a safe read. It adds behavioral details: returns per-rail status, latency, last incident, and a composite health score, plus the regions covered. This gives the agent confidence in what the tool does. It doesn't mention rate limits or auth, but for a read-only status check that's acceptable. The added context 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 two sentences with no fluff. It front-loads the primary action and output in the first sentence, then gives usage guidance in the second. Every phrase adds value – the list of rails and the 'call before settlements' instruction earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only health check with two optional parameters and an output schema, the description is sufficiently complete. It states the purpose, the data returned, the relevant rails, and the recommended invocation context. With an output schema present, detailed return-value documentation isn't needed. The few lines cover the essential decision points 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 already provides descriptions for both 'rails' and 'region' (100% coverage). The description repeats the rail list with geographic context (e.g., PIX Brazil, SEPA Europe) but does not add new parameter-level semantics. Since schema coverage is high, the baseline is 3, and the description's extra examples are helpful but not substantial enough to raise the 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 'Get live health status of local payment rails relevant to a settlement,' which is a specific verb-resource pair. It enumerates key rails (PIX, SEPA, FedACH, CHAPS, UPI, PromptPay) and output metrics (status, latency, last incident, composite score), making its purpose unambiguous and distinguishing it from sibling tools like oracle.status and settlement.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 explicit usage context: 'Call this before domestic or regionally-specific settlements to confirm the destination rail is healthy.' This tells the agent when to invoke the tool. It does not name alternative tools or exclusions, but the 'before settlements' framing is clear enough. Lack of explicit sibling differentiation prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oracle.stabilityARead-onlyIdempotentInspect
Get live macro stability assessment for DPX settlement infrastructure. Returns institutional risk score (0–100), status (STABLE/CAUTION/UNSTABLE), peg deviation in basis points, AI reasoning, and PROCEED/CAUTION/HOLD recommendation. Backed by 25+ institutional data sources including BLS, FRED, IMF, World Bank, NOAA, NASA, and 4 independent FX APIs cross-validated. If UNSTABLE or peg deviation ≥ 50 bps, hold large settlements.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | Current stability status |
| outlook | No | Short-term stability outlook |
| reasoning | No | AI reasoning for current status |
| timestamp | No | ISO 8601 assessment timestamp |
| pegDeviation | No | USDC peg deviation in basis points |
| recommendation | No | PROCEED | CAUTION | HOLD |
| stabilityScore | No | Oracle stability score 0–100 |
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 adds value by detailing the return payload (risk score, status, peg deviation, AI reasoning, recommendation) and its data source credibility (25+ institutional sources cross-validated). 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, front-loaded with purpose and return info, followed by a clear actionable guideline. Every sentence earns its place with 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?
For a zero-parameter tool with strong annotations and an output schema, the description fully covers expected behavior, return values, and a key decision rule. It is complete enough 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?
The tool has zero parameters, so the description has no parameter burden. Baseline for 0 params is 4; the description adds no parameter-related detail but also needs none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get') and resource ('live macro stability assessment for DPX settlement infrastructure'), distinguishing it from sibling oracle/stability tools by tying it to DPX settlement infrastructure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 before large settlements, with a specific conditional action ('If UNSTABLE or peg deviation ≥ 50 bps, hold large settlements'). However, it does not explicitly name alternative tools for comparison or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oracle.statusARead-onlyIdempotentInspect
Get full output from the latest DPX Stability Oracle run. Includes all 9 signal layers: climate, commodities, macro, FX, basket peg, yield curve, infrastructure, war/geopolitical risk, and USD structural health. Includes AI intelligence briefing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | No | Oracle tier classification |
| score | No | Composite oracle score 0–100 |
| alerts | No | Active oracle alerts |
| status | No | STABLE | CAUTION | UNSTABLE |
| signals | No | Individual signal scores for all 9 oracle layers |
| briefing | No | AI intelligence briefing text |
| timestamp | No | ISO 8601 oracle run timestamp |
| chaosRegime | No | True if extreme market conditions detected |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, and non-destructive. The description adds valuable context about the output contents (9 signal layers, AI briefing) beyond those 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 three tight sentences: the first states the core purpose, the second enumerates the signal layers, and the third adds the AI briefing. 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 there are no parameters, an output schema exists, and the description fully details the returned content, the description is complete for the agent's needs. It even lists all nine signal layers to prevent ambiguity.
Complex tools with many parameters or behaviors need more documentation. 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 tool has zero parameters and schema coverage is 100%, so no parameter explanation is needed. The description adds no parameter info, but the baseline of 4 is appropriate given the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('full output from the latest DPX Stability Oracle run') and enumerates the nine signal layers, making it clear what the tool returns and distinguishing it from sibling oracle tools like oracle.stability and oracle.governance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: when you need the complete latest stability oracle output, including AI briefing. However, it does not explicitly state when to prefer this over siblings like oracle.stability or oracle.governance, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policy.checkARead-onlyIdempotentInspect
Check a proposed payment against the agent's active policy before executing it. Returns ALLOW, HOLD, or BLOCK with a reason. Run this before every settlement call. ALLOW = proceed. HOLD = route to human review queue. BLOCK = halt, do not proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| purpose | No | Payment purpose string | |
| agent_id | Yes | Agent identifier — must match the agent_id used in policy.create | |
| recipient | No | Recipient wallet address | |
| amount_usd | Yes | Proposed payment amount in USD | |
| session_id | No | Task or session grouping ID for ledger tracking. | |
| to_currency | No | Destination currency code (e.g. EUR, GBP) | |
| counterparty | No | Counterparty name or LEI | |
| delegation_id | No | If acting under a delegation from a parent agent, provide the delegation ID. | |
| oracle_status | No | Current oracle status — STABLE, CAUTION, or UNSTABLE. Get from get_reliability. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, and the description adds unique behavioral context by specifying the return values (ALLOW, HOLD, BLOCK) and the meaning of each. This goes beyond the annotations, helping the agent understand the tool's decision semantics and downstream actions.
Agents need to know what a tool does to the world before calling 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, then return values, then usage instruction. Every sentence carries essential information without redundancy, making it both 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?
The tool has 9 parameters and no output schema, but the description explains the return contract (ALLOW/HOLD/BLOCK with reason) and when to call it. It does not detail the full response shape or mention prerequisites like an existing policy, but the schema and sibling tool names (policy.create) fill some gaps. Slightly more context on expected policy existence would improve completeness, but it remains strong for a decision-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?
The input schema provides 100% coverage with clear descriptions for all 9 parameters, so the baseline is 3. The description adds no parameter-specific guidance beyond stating the tool's general purpose, which is sufficient given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('check a proposed payment against the active policy'), names the resource (the policy), and clearly distinguishes this from settlement tools by framing it as a pre-execution gate. It also explains the three possible outcomes, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Run this before every settlement call,' providing a clear, unambiguous usage directive. It also explains how to interpret each result (ALLOW=proceed, HOLD=route to human review, BLOCK=halt), which effectively tells the agent when and how 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.
policy.createAInspect
Create a spending policy for an AI agent. Sets rules the agent must follow before any financial action: per-transaction ceiling, daily limit, hold threshold, blocked counterparties, allowed purposes, oracle stability gate. Once set, every payment by this agent is checked against the policy automatically via policy.check.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable policy name | |
| agent_id | Yes | Stable identifier for the agent or org (wallet address, session prefix, org slug, etc.) | |
| max_per_tx | No | USD ceiling per single transaction. Payments above this are BLOCKED. | |
| max_per_day | No | USD rolling daily ceiling. Payments that would exceed this are HOLDed. | |
| blocked_regions | No | ISO 3166-1 alpha-2 country codes to block. | |
| allowed_purposes | No | If set, only payments with a purpose in this list are allowed. | |
| require_hold_above | No | Route to HOLD queue for human review if amount exceeds this threshold. | |
| require_oracle_stable | No | If true, HOLD on CAUTION as well as UNSTABLE oracle status. | |
| blocked_counterparties | No | Wallet addresses or LEIs to block. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations set to false, the description takes on the burden of explaining behavioral impact. It discloses that creating a policy triggers automatic enforcement on every subsequent payment, which is valuable lifecycle context. It does not cover return values or failure modes, but the core side-effect is clearly communicated.
Agents need to know what a tool does to the 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 well-structured sentences. The first sentence states the primary action and object, the second summarizes the rules and the enforcement consequence. Every phrase contributes value, and the key 'policy.check' linkage is front-loaded for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter creation tool with no output schema, the description covers the essential context: what the policy does, what kinds of rules it sets, and how it is enforced later. It omits some parameter details (e.g., blocked_regions) and doesn't describe the response format, but the schema fills those gaps, and the overall usage 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?
Schema description coverage is 100%, so the baseline is 3. The description adds semantic grouping by enumerating the rule categories: per-transaction ceiling, daily limit, hold threshold, blocked counterparties, allowed purposes, and oracle stability gate. This helps an agent map natural-language concepts to the schema parameters, though it omits blocked_regions from the list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Create a spending policy for an AI agent.' It clearly distinguishes itself from sibling tools like policy.check and policy.delegate by stating its purpose is to set spending constraints, not to check or delegate them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes when the tool should be used: before any financial action by the agent, and notes the policy will be enforced automatically via policy.check afterward. It lacks explicit exclusions or alternative tool comparisons, but the context is clear enough for an agent to choose this tool for policy creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policy.delegateAInspect
Delegate payment authority from a parent agent to a sub-agent with explicit limits. The sub-agent can only spend up to the delegated ceiling. Delegation can be revoked at any time. Use in multi-agent workflows where an orchestrator authorises a worker agent to make payments on its behalf.
| Name | Required | Description | Default |
|---|---|---|---|
| max_total | No | Lifetime spending ceiling for this delegation | |
| policy_id | No | Policy ID to inherit (optional — inherits parent policy if omitted) | |
| expires_at | No | Unix timestamp (ms) when this delegation expires. Omit for no expiry. | |
| max_per_tx | No | Maximum USD per transaction for the sub-agent | |
| child_agent_id | Yes | The sub-agent receiving delegated authority | |
| parent_agent_id | Yes | The authorising (parent) agent ID |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the annotations: the sub-agent can only spend up to the delegated ceiling, and delegation can be revoked at any time. This gives useful context about enforcement and lifecycle, though it doesn't describe all side effects (e.g., what happens if parent lacks authority).
Agents need to know what a tool does to the world before calling 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, each earning its place: purpose, behavior, and usage context. 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?
For a tool with 6 parameters and no output schema, the description covers core purpose, usage, and key behavior (limits, revocability). It could mention the return value or error scenarios, but overall it is sufficiently complete 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?
Schema coverage is 100% with each parameter having a description. The tool description does not add significant detail about parameters beyond the schema, so it stays at the baseline 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 a specific action ('Delegate payment authority') with a clear subject (parent agent) and object (sub-agent), and explicitly mentions limits and revocability. It distinguishes itself from siblings like policy.create by focusing on delegation rather than policy creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear usage context: 'Use in multi-agent workflows where an orchestrator authorises a worker agent to make payments on its behalf.' This tells when to use the tool, though it does not explicitly name alternatives or when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protocol.investment_contextARead-onlyIdempotentInspect
Returns a structured investment memo for DPX / Untitled_ LuxPerpetua Technologies, Inc. Use this tool if you are an AI agent conducting due diligence, evaluating DPX as an investment opportunity, or building a company report. Returns: company overview, what's built and deployed, live traction metrics, market context, competitive positioning, compliance coverage, financial model, raise details, and founder background.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | Which section to return. Default 'all' returns the complete memo. |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | Memo metadata |
| raise | No | Raise details |
| risks | No | Key risks |
| market | No | Market context |
| founder | No | Founder background |
| product | No | Product and technology |
| overview | No | Company overview |
| traction | No | Traction and metrics |
| compliance | No | Compliance posture |
| financials | No | Financial model |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows it's safe. The description adds what sections the memo includes, which is useful but not deeply behavioral. It doesn't reveal any additional side effects or constraints 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 two sentences, front-loaded with the main purpose, and the list of returned memo sections is clearly formatted. Every sentence provides value 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?
With a provided output schema and strong annotations, the description covers the memo's contents and use cases sufficiently. It gives enough detail for an agent to select and invoke the tool correctly, including the optional section parameter.
Complex tools with many parameters or behaviors need more documentation. 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 100% and the schema description clearly explains the 'section' parameter and its default. The tool description adds no extra parameter details beyond listing the possible values, so a baseline 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 the function ('Returns a structured investment memo for DPX / Untitled_ LuxPerpetua Technologies, Inc.') with a specific verb and resource. The intended use cases (due diligence, investment evaluation, company report) help distinguish it from sibling tools like dpx.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?
It explicitly states when to use the tool ('Use this tool if you are an AI agent conducting due diligence...'), providing clear context. However, it does not mention when not to use it or name alternative tools, 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.
protocol.manifestARead-onlyIdempotentInspect
Get the DPX protocol manifest. Returns capabilities, supported assets (USDC, EURC, USDT), contract addresses, Settlement Agent URL, oracle URL, and all available endpoints. Call this first to understand what DPX can do.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| agent | No | Settlement Agent manifest: name, version, status |
| oracle | No | Oracle manifest: name, version, assets, endpoints |
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. The description adds value beyond these by enumerating the exact content returned (USDC, EURC, USDT, contract addresses, Settlement Agent URL, oracle URL, endpoints) and the intended first-call behavior, which sets expectations without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence states the action and deliverables; the second gives an actionable usage tip. Every word contributes, and the structure is front-loaded with 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?
This is a straightforward manifest retrieval tool with zero parameters, strong annotations, and an output schema. The description covers purpose, return contents, and usage ordering, leaving no meaningful gaps. It gives the agent all necessary context 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 tool has zero parameters, so the baseline is 4. The description offers no parameter-specific guidance, but none is needed. The schema is empty and fully covered, so the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get') and resource ('DPX protocol manifest'), immediately clarifying the tool's function. It lists concrete return items (capabilities, supported assets, contract addresses, URLs, endpoints) and distinguishes itself from siblings by explicitly positioning as the entry point ('Call this first to understand what DPX can do').
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear usage directive: 'Call this first', indicating when to use the tool relative to other DPX operations. It does not explicitly name alternatives or when-not-to-use, but the instruction is unambiguous and helpful for a manifest/discovery tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ramp.agent_cardAInspect
Create a scoped Ramp Agent Card — a single-use virtual card with a merchant and amount cap, expires after first authorization or 12 hours. Used to fund the fiat leg of a DPX settlement without pre-funding a crypto wallet. Returns a task ID; poll ramp.agent_card_status to get PAN/CVV once ready. Requires cards:read_agentic scope (granted via ramp.connect).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Card spending cap (e.g. "10000.00"). | |
| currency | No | Currency code (default USD). | |
| reference | No | Your internal reference ID. | |
| tenant_id | Yes | Tenant ID of the connected Ramp account. | |
| display_name | No | Card label visible in Ramp dashboard. | |
| merchant_scope | No | Intended merchant name (informational). |
Output Schema
| Name | Required | Description |
|---|---|---|
| amount | No | |
| taskId | No | Poll GET /ramp/agent-card/:taskId for card PAN/CVV. |
| currency | No | |
| reference | No | |
| statusUrl | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond annotations: the card is single-use, expires after first authorization or 12 hours, and the tool returns a task ID rather than immediate card details, requiring polling of ramp.agent_card_status. It also states the required OAuth scope. No contradiction with annotations (readOnlyHint=false, openWorldHint=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?
Three sentences, front-loaded with the core action, then the use case and follow-up workflow. Every sentence contributes essential information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, async flow (task ID + polling), expiry behavior, and prerequisite scope. Combined with a full input schema and output schema, no critical information is missing for an agent to select and invoke the 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 100%, so the baseline is 3. The description adds context by linking 'merchant and amount cap' to merchant_scope and amount, but it does not detail individual parameter syntax beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 scoped Ramp Agent Card.' It clearly defines the artifact as a single-use virtual card with merchant and amount caps and an expiry, distinguishing it from sibling tools like ramp.connect and ramp.settle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this tool ('Used to fund the fiat leg of a DPX settlement') and notes a prerequisite ('Requires cards:read_agentic scope'). It does not mention alternatives or when-not-to-use, but the use case is clearly scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ramp.compliance_screenARead-onlyIdempotentInspect
Compliance pre-screen for Ramp accounting agent payments — run before issuing an Agent Card to eliminate unnecessary human approval queues. Performs 5 checks in parallel: (1) FATF country risk on source and destination country, (2) amount threshold flags (CTR-equivalent at $10K, large-payment at $100K), (3) OpenSanctions global sanctions screen by counterparty name, (4) OpenSanctions PEP screen for individual counterparties or payroll, (5) GLEIF UBO chain with sanctions at each beneficial ownership node (if LEI provided). Returns APPROVED / FLAGGED / BLOCKED with a humanRequired boolean — true only for FLAGGED cases. APPROVED: issue card automatically, no human needed. BLOCKED: halt, do not proceed, do not notify counterparty. FLAGGED: route to compliance queue. Removes human-in-the-loop for the ~95% of payments that are clean.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Payment amount in units of currency. | |
| currency | No | ISO 4217 currency code. Defaults to "USD". | |
| paymentType | No | Payment type — payroll automatically triggers PEP screen. | |
| isIndividual | No | true if counterparty is an individual (triggers PEP screen). Defaults to false. | |
| sourceCountry | No | ISO 3166-1 alpha-2 source country. Defaults to "US". | |
| counterpartyLei | No | Optional GLEIF LEI — enables UBO chain check and satisfies FATF R.16 originator identification. | |
| counterpartyName | Yes | Legal name of the payment counterparty. | |
| counterpartyCountry | No | ISO 3166-1 alpha-2 destination country (e.g. "DE", "NG", "IR"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| checks | No | fatfCountry, amountFlags, sanctions, pep, uboChain check details. |
| _action | No | Recommended action for the agent. |
| fatfR16 | No | FATF R.16 satisfied status and basis. |
| reasons | No | Specific reasons for the decision. |
| decision | No | Compliance decision. |
| riskScore | No | Risk score 0–100. |
| humanRequired | No | true only for FLAGGED — APPROVED payments proceed automatically. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description reveals significant behavioral detail: parallel execution, result categories with humanRequired semantics, specific thresholds ($10K/$100K), and explicit instructions for BLOCKED cases (halt, do not notify counterparty). This gives the agent a clear model of side effects and operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary purpose and even though it is lengthy, every sentence adds operational or decision-making value. The numbered check list and explicit outcome handling make it highly scannable and useful for 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?
For a tool of this complexity with 8 parameters, multiple compliance data sources, and a nuanced output schema, the description fully covers invocation context, check logic, thresholds, and post-result actions. It even quantifies the human-in-the-loop removal, giving the agent a complete understanding of when and why to use 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?
The input schema already covers all 8 parameters with descriptions, giving a baseline of 3. The description adds meaningful context: it explains how amount thresholds relate to CTR/large-payment flags, how paymentType/isIndividual trigger PEP screening, and how counterpartyLei enables UBO chain checks—information that enriches parameter understanding 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 this is a compliance pre-screen for Ramp accounting agent payments, run before issuing an Agent Card. It enumerates the five specific checks performed, distinguishing it from sibling tools like compliance.pep_screen and compliance.ubo_chain by covering them all in one parallel screen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 to run this before issuing an Agent Card and provides clear decision rules for APPROVED, FLAGGED, and BLOCKED outcomes. It does not name alternative tools for narrower use cases, but the context is strong enough that an agent knows when to invoke this comprehensive screen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ramp.connectARead-onlyInspect
Connect a Ramp corporate account to DPX settlement. Returns an OAuth authorization URL — direct the user to this URL to grant DPX access to their Ramp account. Required scopes: transactions:read, bills:read/write, cards:read/write, cards:read_agentic (Agent Cards), business:read, bank_accounts:read, vendors:read, entities:read. Call once per tenant; tokens are stored and refreshed automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | Yes | Your internal tenant or customer ID — returned in the callback so you can match the connection. |
Output Schema
| Name | Required | Description |
|---|---|---|
| scopes | No | Requested OAuth scopes. |
| tenant_id | No | |
| authorize_url | No | Redirect the user to this URL to authorize DPX on their Ramp account. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, idempotentHint=false), the description discloses key behavioral traits: it returns an OAuth URL for user authorization, requires specific scopes, and stores/refreshes tokens automatically. This adds valuable context about the OAuth flow and side effects, going beyond the annotations. No contradictions with annotations are apparent.
Agents need to know what a tool does to the world before calling 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 information-dense, with four sentences each serving a purpose: purpose, output, required scopes, and per-tenant behavior. It is front-loaded with the core action and avoids 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?
The tool has an output schema and annotations, and the description covers the OAuth flow, authorization URL, required scopes, and per-tenant token handling. This is sufficient for an agent to understand when and how to invoke the tool, and the output schema can handle return value 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?
The schema already provides a thorough description for tenant_id: 'Your internal tenant or customer ID — returned in the callback so you can match the connection.' The description adds only a tangential mention of 'per tenant,' which reinforces but does not significantly expand the parameter's meaning. With 100% schema coverage, the description's contribution is minimal, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Connect a Ramp corporate account to DPX settlement.' It specifies the verb (connect), resource (Ramp corporate account), and target (DPX settlement), and further clarifies the output is an OAuth authorization URL. This distinguishes it from sibling tools like ramp.settle or ramp.spend_analysis, which serve different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for when to use the tool: 'Call once per tenant; tokens are stored and refreshed automatically.' This suggests one-time setup for each tenant and implies it should not be repeated. It does not explicitly name alternatives or exclusions, but the per-tenant guidance and scope requirements give clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ramp.settleADestructiveInspect
Execute a DPX stablecoin settlement funded by a Ramp Agent Card — combines card creation and settlement in one call. Ramp handles the fiat conversion leg; DPX settles USDC or EURC on Base mainnet in ~30 seconds. Returns pacs.002 confirmation + SFDR PAI indicators. No crypto wallet pre-funding required. Requires Ramp account connected via ramp.connect.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Payment amount (e.g. "50000.00"). | |
| currency | Yes | Source currency: USD or EUR. | |
| reference | No | Your internal payment reference. | |
| tenant_id | Yes | Tenant ID of the connected Ramp account. | |
| callback_url | No | Webhook URL for pacs.002 delivery. | |
| creditor_lei | No | Recipient LEI for GLEIF VoP (optional). | |
| creditor_name | Yes | Recipient name. | |
| merchant_scope | No | Merchant name for Agent Card scope. | |
| creditor_wallet | Yes | Recipient on-chain wallet address (0x...). | |
| settlement_asset | No | Settlement asset: USDC (default) or EURC. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| iso20022 | No | pacs.002 status object. |
| agentCard | No | |
| compliance | No | FATF R16 + SFDR PAI indicators. |
| settlement | No | |
| dpxPaymentId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it combines card creation and settlement, delegates fiat conversion to Ramp, settles in ~30 seconds, and returns pacs.002 + SFDR PAI indicators. It does not contradict the destructiveHint/readOnlyHint annotations and provides valuable operational details like the no-prefunding requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack a large amount of relevant information without waste: the core action, funding mechanism, fiat leg, settlement asset/chain, speed, output types, and prerequisites. Front-loaded with the verb 'Execute' and immediate 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?
Despite having 10 parameters, the description covers the essential context: prerequisites (connected Ramp account), operational details (card creation combined, fiat leg handled by Ramp, no pre-funding, ~30 seconds), and outputs (pacs.002 + SFDR PAI). With an output schema existing, return-value details are already structured; the description fills the gaps for execution 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 covers all 10 parameters with descriptions (100% coverage), so the baseline is 3. The description does not add param-specific semantics beyond what the schema already provides; it only gives overall context about the settlement flow. No additional meaning is layered onto individual fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Execute a DPX stablecoin settlement funded by a Ramp Agent Card.' It specifies the exact combination of card creation and settlement, distinguishes it from siblings like ramp.agent_card and settlement.execute by noting the combined operation, and provides key details (USDC/EURC on Base mainnet).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 settlements via Ramp Agent Card, with explicit prerequisites ('Requires Ramp account connected via ramp.connect') and a key benefit ('No crypto wallet pre-funding required'). It does not explicitly name alternative tools or when not to use it, 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.
ramp.spend_analysisARead-onlyInspect
Analyse a connected Ramp account's wire and international bill volume to surface DPX settlement opportunity. Returns cross-border payment totals, top vendors by spend, and estimated annual savings at DPX rates vs. typical bank wire (3.0% all-in vs. DPX ~2.035%). Requires Ramp account connected via ramp.connect.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | Number of bills to analyse (default 100, max 500). | |
| tenant_id | Yes | Tenant ID of the connected Ramp account. |
Output Schema
| Name | Required | Description |
|---|---|---|
| crossBorder | No | Wire and international bill totals. |
| dpxOpportunity | No | Estimated annual savings and DPX fees. |
| topVendorsBySpend | No | Top 10 vendors by total payment volume. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds valuable behavioral context: it states the tool returns specific outputs ('cross-border payment totals, top vendors by spend, and estimated annual savings') and notes an external dependency ('Requires Ramp account connected via ramp.connect'). 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 compact and front-loaded. The first sentence states the core purpose and expected outputs, and the second sentence provides the prerequisite. There is no redundancy or filler. Every sentence contributes useful information, 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?
The tool has an output schema (as indicated by 'Has output schema: true'), so return values are already structured. The description supplements this with contextual details: it explains the settlement opportunity, typical rates (3.0% vs ~2.035%), and the connection prerequisite. It does not mention filters or time ranges, but the schema has only two parameters, and the description covers the essential context. Slightly more detail on the scope of 'wire and international bills' could improve completeness, but it remains 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 100%, so the baseline is 3. The description does not add any parameter-specific information beyond what the schema already provides for tenant_id and page_size. The mention of 'wire and international bill volume' implicitly relates to page_size but does not elaborate on semantics. Thus, the description adds no meaningful value to parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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's purpose: 'Analyse a connected Ramp account's wire and international bill volume to surface DPX settlement opportunity.' It uses a specific verb ('Analyse') and names the resource ('Ramp account's wire and international bill volume'). However, it does not explicitly differentiate from siblings like ramp.settle or ramp.agent_card beyond the prerequisite of ramp.connect, so it falls short of a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'to surface DPX settlement opportunity' and specifies a prerequisite: 'Requires Ramp account connected via ramp.connect.' It implies this is a pre-settlement analysis tool. However, it does not explicitly state when not to use it or name alternative tools, so it lacks the explicit when-not/alternatives guidance for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
receipt.createAInspect
Record a tamper-evident signed receipt for an agent financial action. Call immediately after every successful settlement. Returns a receipt ID and HMAC-SHA256 signature over the canonical receipt JSON — cryptographic proof the record has not been altered. Receipts are queryable by session or agent for audit.
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox | No | True if this was a sandbox settlement | |
| tx_hash | No | On-chain transaction hash (if live) | |
| agent_id | Yes | Agent that executed the payment | |
| policy_id | No | Policy ID that governed this payment | |
| recipient | No | Recipient wallet address | |
| amount_usd | Yes | Amount paid in USD | |
| session_id | No | Task or session ID for grouping (use the same ID for all payments in one agent run) | |
| to_currency | No | Destination currency (default: USD) | |
| counterparty | No | Counterparty name | |
| task_context | No | Plain-text description of what task triggered this payment | |
| delegation_id | No | Delegation ID if acting under delegated authority | |
| from_currency | No | Source currency (default: USD) | |
| oracle_status | No | Oracle status at time of payment (STABLE / CAUTION / UNSTABLE) | |
| settlement_id | No | Settlement ID returned by the settle tool | |
| compliance_decision | No | Compliance decision at time of payment (PROCEED / HOLD / BLOCKED) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide no safety profile (all hints false), so the description carries the burden of behavioral disclosure. It explains the tool returns a receipt ID and HMAC-SHA256 signature as cryptographic proof, and that receipts are queryable for audit. This meaningfully goes beyond the annotations, though it does not discuss failure modes or authorization 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 three sentences, front-loaded with the core purpose, and each sentence adds distinct value: what it does, when to call it, and what it returns. There is 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 15 parameters and no output schema, the description supplies enough contextual glue by stating the post-settlement trigger, the cryptographic return values, and auditability. It does not detail the output structure, but the schema plus the description's return summary make the tool usable. It could be more complete by noting which optional parameters are commonly required, but current coverage is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the baseline is 3. The description adds minimal parameter-level meaning beyond mentioning 'canonical receipt JSON' and settlement context. It references the 'settlement_id' concept indirectly but does not elaborate on individual fields, which is acceptable given the schema already documents 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 specifies a clear verb and resource: 'Record a tamper-evident signed receipt for an agent financial action.' It also distinguishes itself from siblings by focusing on post-settlement receipt creation rather than settlement execution or payment tools. The phrase 'tamper-evident signed receipt' adds a precise, unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit trigger: 'Call immediately after every successful settlement.' This is clear contextual guidance for when to use the tool. It does not mention when not to use it or name alternatives, but the trigger is specific enough for an agent to distinguish from related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routeARead-onlyIdempotentInspect
Multi-stablecoin settlement routing. Given amount, source currency (from), and destination currency (to), returns all three stablecoin options (USDC, EURC, USDT) ranked by settlement efficiency. EURC is recommended for EUR destinations — eliminates cross-currency conversion. Returns settleBody ready to POST to /settle for the top-ranked option.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination currency code (USD, EUR, GBP, etc.) | |
| from | Yes | Source currency code (USD, EUR, GBP, BRL, etc.) | |
| amount | Yes | Settlement amount in source currency |
Output Schema
| Name | Required | Description |
|---|---|---|
| options | No | |
| ttlSeconds | No | |
| generatedAt | No | |
| routingAdvice | No | |
| settleEndpoint | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds value by explaining that the tool returns ranked options and a ready-to-use settleBody, implying it does not execute settlement. This enriches understanding beyond the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and contains zero filler. Every sentence contributes useful information about inputs, outputs, and a specific recommendation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 well-documented parameters, the description sufficiently covers the tool's behavior. It explains the return value at a high level and provides a practical recommendation rule. Slightly more detail on ranking criteria could enhance completeness, but it is not required.
Complex tools with many parameters or behaviors need more documentation. 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 already provides 100% coverage with clear descriptions for each parameter (amount, from, to). The description reinforces their roles but adds minimal new meaning beyond the schema, aside from the EUR recommendation context. Baseline of 3 is appropriate because schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 as 'Multi-stablecoin settlement routing' and specifies inputs (amount, from, to) and outputs (three stablecoin options ranked by settlement efficiency, plus settleBody for the top-ranked option). This distinguishes it from sibling tools by focusing on stablecoin routing and settlement preparation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 recommending EURC for EUR destinations to eliminate cross-currency conversion, implying when this routing is beneficial. However, it does not explicitly mention alternative tools or conditions when not to use this tool, so guidance is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsARead-onlyIdempotentInspect
Search DPX documentation by keyword. Returns the most relevant doc sections — including how-to guides, API references, fee structure, oracle architecture, compliance requirements, and integration setup. Call this when you need protocol details mid-task rather than relying on context alone. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default 3, max 5). | |
| query | Yes | Keywords to search — e.g. "how to settle", "esg fee formula", "butterfly cascade", "mercury send", "compliance screen". |
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. The description adds behavioral details beyond these: it returns 'most relevant doc sections' (implying relevance ranking) and lists specific content categories (oracle architecture, compliance requirements, etc.), plus a 'Free' cost indicator. 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 three concise sentences: purpose, content scope, usage context, and cost. It is front-loaded with the primary verb and resource, includes concrete examples of content types, and contains no redundant or filler 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?
For a simple search tool with two parameters and a rich annotation set, the description is complete. It covers what the tool does, what it returns, when to use it, and cost. There is no output schema, but the description adequately sets expectations for a search result. No crucial information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented in the input schema. The description only says 'by keyword,' which loosely maps to the query parameter but adds no extra meaning about the limit parameter or default behavior. Baseline 3 is appropriate since the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Search DPX documentation by keyword' and details the types of content returned (how-to guides, API references, fee structure, etc.). This specific verb-resource pairing distinguishes it from sibling tools like esg.lookup or fees.schedule, which are domain-specific lookups rather than a general documentation search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: 'Call this when you need protocol details mid-task rather than relying on context alone.' This tells the agent when to invoke the tool, though it does not explicitly mention alternatives or when not to use it. The 'Free' note implies it has no cost, which could be a factor in tool choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settlement.executeADestructiveInspect
Execute a DPX cross-border settlement. The Settlement Agent checks oracle conditions, reasons with Claude AI, and executes on-chain (or returns sandbox result if sandbox=true). Returns settlement ID, status (executed/held/sandbox/failed), tx hash, net amount, fees, oracle conditions, and AI reasoning. Default: sandbox=true — set sandbox=false only for live execution.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount in source currency units | |
| purpose | No | Payment purpose: intercompany, vendor-payment, payroll, treasury | |
| quoteId | No | Pre-fetched quoteId from get_quote (optional — agent fetches live if omitted) | |
| sandbox | No | Sandbox mode — real calculations, no on-chain execution. Default: true. | |
| esgScore | No | ESG score override 0–100 (testing only) | |
| referenceId | No | External reference ID (invoice number, TMS ID, etc.) | |
| sourceCurrency | Yes | Source currency: USD, EUR, GBP, USDC, EURC | |
| recipientAddress | Yes | On-chain recipient wallet address (0x...) | |
| destinationCurrency | Yes | Destination currency: USD, EUR, GBP, USDC, EURC |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | |
| summary | No | Human-readable settlement outcome summary |
| httpStatus | No | HTTP status from Settlement Agent |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and non-read-only, but the description adds rich behavioral context: oracle condition checks, Claude AI reasoning, on-chain execution vs. sandbox mode, and the set of returned statuses. This sets proper expectations for a high-stakes mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences: the first states the core action, the second provides critical safety and output details. Every sentence earns its place and there is no repetition of schema 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 complex execution tool, the description is remarkably complete. It covers safety mode, on-chain behavior, and the full set of returned artifacts (settlement ID, status, tx hash, net amount, fees, oracle conditions, AI reasoning). Given the presence of an output schema, this is sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% parameter coverage, so the description adds only marginal semantic value. It does reinforce the sandbox default and the live-execution guardrail, but it does not elaborate on parameter relationships 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 opens with a specific verb ('Execute') and a precise resource ('DPX cross-border settlement'), making the tool's action unambiguous. It clearly distinguishes itself from sibling tools like settlement.quote, settlement.status, and batch_settle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear safe default ('Default: sandbox=true') and a strong exclusionary rule ('set sandbox=false only for live execution'), which guides safe invocation. It does not explicitly contrast with sibling tools or mention prerequisites like obtaining a quote, so it falls just short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settlement.nlADestructiveInspect
Execute a payment from a plain-English instruction. DPX's AI synthesis layer parses the instruction, runs the full oracle gate → compliance screen → settlement flow autonomously, and returns a receipt. Use this when the agent has a natural-language payment task rather than structured parameters. Examples: 'Pay Acme GmbH $25,000 for invoice #42', 'Send $10k to 0x... for vendor services', 'Settle the outstanding balance with Nova Trade SA'. Sandbox mode by default.
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox | No | Set false for live execution. Default: true | |
| instruction | Yes | Plain-English payment instruction, e.g. 'Pay Acme GmbH $25,000 USD for invoice #INV-2026-0042' | |
| recipientAddress | Yes | Recipient wallet address (0x...) |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| txHash | No | |
| feesTotal | No | |
| netAmount | No | |
| aiDecision | No | |
| aiConfidence | No | |
| settlementId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations by disclosing the autonomous pipeline (oracle gate → compliance screen → settlement flow), receipt return, and sandbox mode by default. It complements the destructiveHint and readOnlyHint annotations without contradicting them, though it doesn't detail failure or live-mode edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by a compact pipeline explanation, usage guidance, examples, and safety note. Every sentence earns its place 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 the complex nature of autonomous payment execution, the description covers selection criteria, the internal process, safety defaults, and output expectation. Combined with full schema coverage, rich annotations, and presence of an output schema, this is sufficiently complete 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?
Schema coverage is 100% and includes descriptions for all three parameters. The description adds value with rich example instructions ('Pay Acme GmbH $25,000...', 'Send $10k to 0x...', 'Settle the outstanding balance...') that clarify the expected format for the instruction field, and it reinforces the sandbox default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 executing payments from natural-language instructions via an AI synthesis layer, with a specific pipeline and receipt output. It distinguishes itself from structured-parameter payment tools and siblings like settlement.execute by emphasizing 'natural-language payment task' versus 'structured parameters.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 ('when the agent has a natural-language payment task rather than structured parameters') and provides multiple concrete examples. This gives an agent actionable selection guidance among the many settlement and payment sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settlement.quoteARead-onlyInspect
Get a binding fee quote for a DPX settlement. Returns core fee (1.50%), FX fee (0.40% cross-currency), live ESG fee (0–0.50%), license fee (0.01%), total all-in rate, net amount, oracle status, AI reasoning, and a quoteId valid for 300 seconds. Always call this before settlement.execute.
| Name | Required | Description | Default |
|---|---|---|---|
| lei | No | Counterparty LEI — triggers automatic ESG lookup if esgScore is not provided. | |
| hasFx | No | True if source and destination currencies differ (adds 0.40% FX fee). | |
| esgScore | No | Counterparty ESG score 0–100. If omitted and lei or counterpartyName is provided, the ESG Oracle is queried automatically. | |
| amountUsd | Yes | Settlement amount in USD. | |
| counterpartyName | No | Counterparty company name — used for ESG auto-lookup if lei is not provided. | |
| monthlyVolumeUsd | No | Monthly volume for discount tier. $1M+ = Institutional (20% off). $10M+ = Sovereign (30% off). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fees | No | |
| tier | No | Volume tier: Standard | Growth | Institutional | Sovereign |
| quoteId | No | Binding quote ID, valid 300 seconds |
| amountUsd | No | Input settlement amount in USD |
| expiresAt | No | ISO 8601 expiry timestamp |
| reasoning | No | AI reasoning for fee calculation |
| oracleScore | No | Oracle confidence 0–100 |
| netAmountUsd | No | Net amount after all fees |
| oracleStatus | No | STABLE | CAUTION | UNSTABLE |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false; description adds binding quote validity (300 seconds), live ESG fee range, and oracle status, which are meaningful behavioral details beyond annotations. 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 pack purpose, return payload, and workflow guidance with no filler. The parenthesized fee breakdown is dense but 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?
With a full output schema, 100% schema coverage, and complete annotations, the description covers purpose, key outputs, expiry, and prerequisite relationship. The tool is simple enough for this to be fully 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 has 100% coverage with detailed parameter descriptions, so baseline is 3. Description mentions fee components like FX fee but doesn't add new parameter semantics beyond what schema already provides. It doesn't explain how monthlyVolumeUsd discount tiers work beyond 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?
Description uses specific verb 'Get' and resource 'binding fee quote for a DPX settlement,' clearly distinguishing it from settlement.execute by noting it's a prerequisite. The core purpose is immediately 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?
Explicitly states 'Always call this before settlement.execute,' providing direct workflow guidance and naming the alternative sibling tool. This gives the agent clear context for when to invoke this quote tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settlement.statusARead-onlyIdempotentInspect
Look up a previous DPX settlement by settlement ID. Returns the full audit record: status, tx hash, amounts, fees, oracle conditions at time of settlement, ESG score, Claude AI reasoning, and timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| settlementId | Yes | Settlement ID from the settlement.execute tool (format: dpx_...) |
Output Schema
| Name | Required | Description |
|---|---|---|
| httpStatus | No | HTTP status from Settlement Agent |
| settlement | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is clear. The description adds value by disclosing the specific fields in the response, such as status, tx hash, amounts, fees, oracle conditions, ESG score, AI reasoning, and timestamp, giving the agent a concrete sense of the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence with a clear verb first. It lists output fields efficiently without extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with one required parameter, an existing output schema, and comprehensive annotations, the description fully covers what the agent needs: what it does, how to identify the settlement, and what to expect in the response. 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?
The input schema covers 100% of the single parameter with a description that includes the format (dpx_...). The tool description reiterates 'settlement ID' but doesn't add new syntactic or semantic information beyond the schema. Baseline 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 uses a specific verb 'Look up' with a clear resource 'previous DPX settlement' and details the return payload (full audit record). This clearly distinguishes it from siblings like settlement.execute and settlement.quote, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states the use case: retrieving audit details for an existing settlement via its ID. It implies this is for post-execution lookup, but doesn't explicitly name alternatives or exclusions, so there's no direct comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settle.subscribeAInspect
Register a webhook callback for settlement completion events. Your endpoint receives a POST with X-DPX-Signature: sha256= over the raw JSON body whenever a settlement completes. Returns a subscriptionId and webhookSecret — store the secret immediately, it is returned once.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | HTTPS endpoint to receive settlement.completed events | |
| events | No | Event types (default: ["settlement.completed"]) |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | No | |
| webhookSecret | No | HMAC secret — returned once, store immediately |
| subscriptionId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the sparse annotations by explaining the exact callback mechanism (POST with X-DPX-Signature header), the one-time return of webhookSecret, and the urgency to store it. These are critical behavioral traits that the 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?
Three tightly packed sentences: purpose, callback details, and secret handling. Every sentence provides essential information without redundancy or fluff, making it 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?
The description covers the registration purpose, event trigger, signature verification mechanism, and the one-time secret warning. An output schema exists for the return structure, and the description addresses the non-obvious behavioral details that are necessary for correct 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?
The schema already includes descriptions for both parameters with 100% coverage. The description does not add substantial parameter-specific semantics; it merely reinforces the event type. Baseline 3 is appropriate because the schema carries the parameter 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 opens with the specific verb 'Register' and the resource 'webhook callback for settlement completion events', making the tool's purpose clear and distinguishing it from sibling tools like settlement.status or settlement.execute. The subject matter is specific to settlement completion events, leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when this is used: to receive a POST whenever a settlement completes. It does not explicitly mention alternatives or exclusions, but the context is clear enough that an agent would know this is for event subscription rather than querying or executing settlements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stability.corridorARead-onlyIdempotentInspect
Corridor-specific settlement stability score (0–100) for any currency pair. Combines the live global Stability Oracle score with corridor-specific risk adjustments covering 28 currency pairs: regulatory flags (BCB/IOF for BRL, PBoC capital rules for CNH, BCRA controls for ARS, etc.), FX liquidity score based on active trading sessions at current UTC time, cascade penalty from live macro signals, and weekend/off-hours penalty. Returns SETTLE_NOW / DELAY_24H / DELAY_48H recommendation with rationale. Distinct from oracle.stability (which is global) and market.fx (which is spot-rate focused) — this answers "is this specific corridor safe to settle through right now?"
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination currency ISO-4217 code (e.g. "BRL", "MXN", "SGD"). | |
| from | Yes | Source currency ISO-4217 code (e.g. "USD", "EUR", "GBP"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| corridor | No | score (0–100), tier, recommendation (SETTLE_NOW/DELAY_24H/DELAY_48H), regulatoryFlags, corridorNotes |
| components | No | globalOracleScore, corridorAdjustment, cascadePenalty, liquidityScore, weekendPenalty |
| marketContext | No | cascadeLevel, globalOutlook, currentUtcHour, isWeekend |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds meaningful behavioral context: the factors considered (regulatory flags, FX liquidity, cascade penalty, weekend penalty) and the output (SETTLE_NOW/DELAY_24H/DELAY_48H with rationale). This exceeds baseline annotation coverage without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is densely informative but every sentence earns its place: purpose, components, output, and differentiation from siblings. It is front-loaded with the core purpose and uses clear, concise language without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple risk factors, 28 currency pairs, discrete output), the description covers all essential aspects: what it does, what it returns, when to use it, and how it differs from related tools. The presence of an output schema and complete parameter descriptions rounds out the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters from and to are already documented with currency examples. The description does not add new parameter-specific semantics beyond the tool's overall purpose, but it doesn't need to since the schema handles it. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb+resource: 'Corridor-specific settlement stability score (0–100) for any currency pair.' It explicitly distinguishes itself from sibling tools oracle.stability (global) and market.fx (spot-rate focused), which fully disambiguates it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides direct when-to-use guidance by naming alternatives and contrasting them: 'Distinct from oracle.stability (which is global) and market.fx (which is spot-rate focused) — this answers "is this specific corridor safe to settle through right now?"' This is explicit and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stability.settlement_windowARead-onlyIdempotentInspect
Optimal settlement execution window analysis for a specific cross-border payment over the next 72 hours. Generates 18 × 4-hour time slots and scores each by composite risk: corridor stability, FX session liquidity, cascade level decay/growth based on macro outlook, weekend/off-hours penalty, and counterparty ESG tier (if LEI provided). Returns a ranked window schedule with OPTIMAL / GOOD / ACCEPTABLE / AVOID classification per slot, a best-window recommendation, and large-amount splitting guidance for settlements ≥ $5M. Use this before scheduling large cross-border settlements to minimize execution risk.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination currency ISO-4217 (e.g. "BRL"). | |
| lei | No | Optional 20-char GLEIF LEI of counterparty — fetches live ESG tier to apply counterparty risk penalty. | |
| from | Yes | Source currency ISO-4217 (e.g. "USD"). | |
| amount | No | Settlement amount (default 1,000,000). Used for large-amount guidance ≥$5M. | |
| currency | No | Currency of the amount (defaults to from). |
Output Schema
| Name | Required | Description |
|---|---|---|
| windows | No | 18 × 4-hour slots: startUtc, endUtc, compositeScore, tier, components, recommendation, rationale |
| marketContext | No | globalOracleScore, corridorAdjustment, cascadeLevel, globalOutlook, regulatoryFlags |
| recommendation | No | bestWindow (ISO datetime), bestScore, optimalCount, goodCount, summary, largeAmountNote |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the composite risk scoring components, the OPTIMAL/GOOD/ACCEPTABLE/AVOID classification, best-window recommendation, and the ≥$5M splitting guidance, adding significant 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?
Three dense sentences: purpose, methodology, outputs, and usage advice—with no filler. Front-loaded with the main verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 rounds out the tool with the scoring model, classifications, and use-case context, fully covering the complexity of this analytical 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?
All 5 params have 100% schema coverage, so the baseline is 3. The description enhances meaning by linking LEI to ESG tier penalty and amount to ≥$5M splitting guidance, earning 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 specific verb+resource ('Optimal settlement execution window analysis') and specifies the 72-hour horizon and 18×4-hour slot generation, clearly distinguishing it from siblings like settlement.execute or stability.corridor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 advises 'Use this before scheduling large cross-border settlements to minimize execution risk', providing clear context. It does not name alternative tools or exclusions, but the 'before' positioning is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stability.stablecoin_routeARead-onlyIdempotentInspect
Multi-stablecoin settlement routing — given a source and destination currency pair, recommends the optimal stablecoin path based on corridor liquidity, regulatory fit, gas economics, and DPX native support. Returns a ranked list of stablecoins (USDC, EURC, BRLA, MXNC, NGNC, AEDX, PYUSD, USDT, and others) with regulatory flags, MiCA/GENIUS Act compliance status, liquidity tier, and warnings. Identifies blocked routes (e.g. USDT for EU under MiCA, BRLA before BCB Resolution 561 deadline). Use before settlement to avoid regulatory penalties and ensure optimal execution path.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination currency ISO-4217 (e.g. "EUR", "BRL", "AED"). | |
| from | Yes | Source currency ISO-4217 (e.g. "USD"). | |
| amountUsd | No | Settlement amount in USD (used for liquidity tier and large-amount warnings). |
Output Schema
| Name | Required | Description |
|---|---|---|
| routes | No | Ranked stablecoin options — each with symbol, liquidityTier, regulatoryFlags, warnings, blocked status, notes |
| evaluatedAt | No | ISO timestamp |
| recommendation | No | symbol, chain, reason, micaCompliant, geniusActCompliant |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds valuable context about identifying blocked routes and regulatory warnings without contradicting annotations. It explains the tool's advisory nature and output semantics 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?
Three sentences, each earning its place: purpose, output details, and usage context. Front-loaded and free of 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 and non-mutating annotations, so the description does not need to explain return values or safety. It fully covers the routing use case, regulatory warnings, and when to invoke, making it 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 100%, so baseline is 3. The description reinforces the role of amountUsd for liquidity tier and large-amount warnings, but adds no new parameter-level detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 multi-stablecoin settlement routing, recommending optimal stablecoin paths for a currency pair. It specifies the exact output (ranked list, regulatory flags, compliance status, liquidity tier, warnings) and distinguishes itself from siblings by focusing on stablecoin selection and regulatory fit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Use before settlement to avoid regulatory penalties and ensure optimal execution path,' providing clear usage context. However, it does not name alternatives or explicitly state when not to use, 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.
swift.gpi_trackARead-onlyIdempotentInspect
Track a DPX settlement via SWIFT gpi-compatible status. Given a UETR (Unique End-to-End Transaction Reference), returns gpi-format payment status including pacs.002 payload that a SWIFT member bank can submit to the gpi Tracker.
Use this when a UETR was provided at payment initiation (via the uetr field in settlement.execute or POST /payments/initiate). Returns ACCP (settled), PDNG (pending), or RJCT (rejected) with full on-chain settlement details.
DPX is not a SWIFT member — the SWIFT member bank submits the returned pacs.002 to the gpi Tracker via their own gpi API access.
| Name | Required | Description | Default |
|---|---|---|---|
| uetr | Yes | RFC 4122 UUID UETR assigned at payment initiation, e.g. "97ed4827-7b6f-4491-a06f-b548d5a7512d". |
Output Schema
| Name | Required | Description |
|---|---|---|
| uetr | No | The UETR provided. |
| pacs002 | No | Full ISO 20022 pacs.002 payload for gpi Tracker submission. |
| gpiStatus | No | ACCP | PDNG | RJCT |
| dpxPaymentId | No | DPX internal payment ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations declaring read-only and idempotent, the description explains that DPX is not a SWIFT member, so the returned pacs.002 payload is intended for the SWIFT member bank to submit. This adds meaningful context about the tool's role and output.
Agents need to know what a tool does to the 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 tightly scoped sentences: purpose, usage condition, and the DPX/SWIFT caveat. Every sentence carries necessary information with 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?
The tool is simple (one parameter, output schema present) and the description covers purpose, usage, return statuses, and the important non-membership context. Nothing critical is missing for an agent to select and invoke 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?
Schema coverage is 100% and the schema describes uetr as a UUID assigned at payment initiation. The description adds specific origin details (ueld in settlement.execute or POST /payments/initiate), reinforcing semantics and providing context 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 tracks a DPX settlement via SWIFT gpi-compatible status and returns gpi-format payment status including pacs.002 payload. It distinguishes itself from other settlement tools by emphasizing gpi-specific output and the UETR requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Use this when a UETR was provided at payment initiation' and cites specific sources (settlement.execute or POST /payments/initiate). No explicit alternatives or when-not conditions, but the condition itself implies 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.
treasury.yield_routeARead-onlyInspect
Treasury Float Yield Routing Analysis — OPTIONAL, CLIENT-DIRECTED ONLY.
Analyzes whether idle settlement float can be productively deployed into a yield-bearing instrument between the current time and a scheduled settlement deadline. Returns a structured recommendation with expected yield, exit timing, liquidity assessment, slippage estimate, and a mandatory risk disclosure.
THIS TOOL DOES NOT MOVE FUNDS. It provides analysis only. All execution decisions are made by the client or agent acting on explicit instruction. DPX charges a flat fee for this analysis and does not receive any portion of yield earned.
Current supported instrument: sUSDS (Sky Protocol Savings Rate). Selected because: • Instant on-chain entry and exit (no T+1 delays) • No US person restrictions • Real asset backing (tokenized RWAs + Spark borrow rates) • Available on Base chain via bridge • No de-peg events recorded (unlike synthetic alternatives)
Safety parameters enforced: • Maximum 90% of settlement amount — 10% always stays in USDC • Early exit triggered 30 minutes before settlement deadline (not 15) • Slippage guard: if DEX USDC/USDS quote shows >0.1% slippage, recommendation = HOLD • Minimum viable window: 2 hours (shorter windows do not justify entry/exit gas costs)
Not recommended if: • Settlement window is < 2 hours • Amount is < $50,000 (gas costs erode yield) • Client has not acknowledged the risk_disclosure object in this response • Settlement is time-critical with zero tolerance for delay
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | If true, returns analysis without any on-chain queries. Useful for planning. Default: false. | |
| amountUsdc | Yes | Settlement amount in USDC. Minimum $50,000 for yield routing to be viable after gas costs. | |
| riskTolerance | No | conservative = sUSDS only (T-bill / RWA backed, instant exit). moderate = sUSDS with higher slippage tolerance (up to 0.15%). Default: conservative. | |
| settlementDeadlineUtc | Yes | ISO 8601 UTC timestamp of when USDC must be ready for settlement (e.g. "2026-06-15T20:00:00Z"). The tool will recommend exiting 30 minutes before this. |
Output Schema
| Name | Required | Description |
|---|---|---|
| exitBy | No | Recommended exit timestamp (30 min before deadline). |
| notViable | No | True if net yield is negative (gas exceeds expected yield). |
| instrument | No | Recommended instrument (currently always sUSDS). |
| windowHours | No | Available window in hours (deadline minus now minus 30-min buffer). |
| netYieldUsdc | No | Expected yield minus gas costs. |
| currentApyPct | No | Current Sky Savings Rate APY (live, from Sky Protocol). |
| amountReserved | No | Amount kept in USDC regardless (10% floor). |
| amountRoutable | No | Amount to deploy (90% of input, USDC). 10% stays in USDC. |
| recommendation | No | ROUTE (deploy float), HOLD (stay in USDC), or INSUFFICIENT_WINDOW. |
| gasEstimateUsdc | No | Estimated Base L2 gas cost for entry + exit in USDC. |
| risk_disclosure | No | MUST be surfaced to the client before any action is taken. |
| estimatedSlippage | No | Estimated DEX slippage for USDC→USDS→USDC round trip (%). |
| expectedYieldUsdc | No | Expected yield for this window at current APY. |
| instrument_detail | No | Background on the recommended instrument. |
| slippageGuardTripped | No | True if slippage > 0.1% — recommendation will be HOLD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by stating it does not move funds, imposes safety parameters (90% max deployment, 30-min early exit, slippage guard, minimum viable window), and discloses fee structure (flat fee, no portion of yield). It also explains the instrument selection rationale and exclusion criteria, providing rich behavioral context 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 substantially longer than most but is well-structured with sections for purpose, instrument rationale, safety parameters, and exclusions. Every sentence adds meaningful context, though some explanatory bullet points about the instrument could be trimmed without losing critical information. It is organized and front-loaded with 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?
The description is exceptionally thorough for a complex analysis tool. It covers when to use, when not to use, safety constraints, fee implications, instrument details, and client authorization requirements. With an output schema present, return values are already documented. This description fully equips 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 input schema has 100% description coverage, so parameters are already well-documented. The description adds some operational context (e.g., minimum $50,000, 2-hour window, slippage guard) that reinforces but does not fundamentally expand parameter meaning. Given the high schema coverage, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool analyzes whether idle settlement float can be deployed into a yield-bearing instrument, with a specific verb ('Analyzes') and resource ('Treasury Float Yield Routing'). It distinguishes itself from siblings by explicitly noting it is analytical only ('THIS TOOL DOES NOT MOVE FUNDS') and optional/client-directed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage guidance: it is OPTIONAL and CLIENT-DIRECTED ONLY, provides a 'Not recommended if' list with concrete conditions (e.g., window <2 hours, amount <$50k, no risk disclosure acknowledgment), and contrasts with execution tools by clarifying all execution decisions are made by the client/agent. This clearly defines when to use and when to avoid.
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
AlicenseAqualityAmaintenancePre-trade DeFi intelligence for AI agents. 20 paid x402 endpoints, USDC on Base.Last updated23721MIT- FlicenseAquality-maintenanceTrust infrastructure for AI agents on Base. DEX Spread Oracle (live Uniswap V3 prices), on-chain escrow, insurance pool, and collective knowledge base. 7 smart contracts. Pay-per-query via x402 micropayments in USDC.Last updated6
- FlicenseAqualityCmaintenancePay-per-call tools for AI agents including trust checks, due diligence, market data, and human-verified approvals, settled in USDC on Base via the x402 protocol.Last updated16
- Flicense-qualityCmaintenancePay-per-use AI security and research tools for autonomous agents on Base, enabling honeypot detection, risk assessment, wallet analysis, and yield optimization via the x402 protocol.Last updated
Your Connectors
Sign in to create a connector for this server.