Skip to main content
Glama

Server Details

MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 56 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A3.6/5.0

Scored across 63 tools

Disambiguation4/5

Despite the large surface, most tools target a distinct resource+action (create_seller, raise_dispute, redeem_voucher, store_base_metadata), and descriptions carefully delineate variants. The main risk is the dense variant families (commit_to_offer/commit_to_conditional_offer/commit_to_buyer_offer, the four sign_receive_with_* tools, and the many expiry tools), which a careful agent can distinguish but could misselect.

Naming Consistency4/5

Almost everything follows a predictable snake_case verb_noun pattern (get_offers, create_offer, commit_to_offer, store_product_v1_metadata, void_offer), and verb usage is consistent across the set. A few names are unusually long or multi-clause (get_all_products_with_not_voided_variants, create_offer_commit_and_redeem), but the convention itself is stable.

Tool Count2/5

63 tools is a very heavy surface for a single server; even accounting for genuine Boson Protocol complexity (offers, exchanges, disputes, meta-tx, IPFS metadata), many variant tools (four permit types, three meta-tx relays, three dispute-expiry tools, five offer-creation variants) make the set unwieldy. The count far exceeds the 3-15 sweet spot and risks overwhelming selection.

Completeness4/5

Coverage is strong across the full lifecycle: account creation (seller/buyer), offer creation/commit/redeem, dispute raise/resolve/escalate/decide/expire/retract, funds deposit/withdraw/read, metadata store/validate, and signing/meta-tx relay. A notable gap is any offer update/edit operation (only void_offer exists), but core workflows have no dead ends.

Available Tools

63 tools
approve_exchange_tokenA
Destructive
Inspect

Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you relay in metaTx mode with transferAuthorizations (built with a sign_receive_with_* tool) passed to send_meta_transaction. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAllowance in wei. Use max uint256 string for unlimited: '115792089237316195423570985008687907853269984665640564039457584007913129639935'.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
exchangeTokenAddressYesERC-20 token contract address to approve for the Boson Protocol diamond.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnlyHint=false, so the mutating/risky profile is already known. The description adds real context beyond that: it does not submit on-chain but 'Returns unsigned transaction data', and it ties into the metaTx relay workflow. It does not mention the unlimited-allowance risk (only the schema alludes to max uint256), leaving a small gap for a destructive approval operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences with zero filler: purpose first, then the ordering/exception rule, then the return behavior. Every sentence earns its place and the most decision-relevant constraint leads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by stating the return is unsigned transaction data, and it explains the workflow position and the metaTx alternative. For a 5-param approval tool this gives an agent everything needed to invoke it in the right sequence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents amount, configId, executionMode, and both addresses in detail. The description adds no parameter syntax or format beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Grants ERC-20 allowance to the Boson Protocol contract'), and distinguishes itself from siblings by naming commit_to_offer and deposit_funds as the operations it must precede. An agent can tell exactly what this does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the ordering requirement ('must be called before commit_to_offer or deposit_funds when using non-native exchange tokens') and the one exception (metaTx relay with transferAuthorizations built via sign_receive_with_* and passed to send_meta_transaction). When-to-use, prerequisite, and alternative path are all covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_voucherA
Destructive
Inspect

Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description adds value beyond annotations by stating the tool returns unsigned transaction data, indicating it does not submit the transaction directly. It also details the cancellation effect (penalty forfeiture, refund). Annotations already mark it as destructive; description supplements with specific behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is three sentences with no redundancy. It front-loads the primary action and immediately follows with prerequisites and effects. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description adequately covers prerequisites, effects, and return value. It could mention potential errors or further side effects, but given the schema and annotations, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter well-described in the schema. The description does not add new parameter-level details. Baseline score of 3 is appropriate as the schema already carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool cancels a committed voucher, with specific verb-resource pair. It distinguishes from siblings like revoke_voucher by specifying caller must be the buyer, which is a unique constraint. The action is unambiguous and well-scoped.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides clear conditions: caller must be the buyer, and explains the financial consequences (forfeit penalty, remainder refunded). It does not explicitly compare with alternative tools like revoke_voucher or void_offer, but the context is sufficient for an agent to determine when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commit_to_buyer_offerA
Destructive
Inspect

Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
offerIdYesID of a buyer-initiated offer (creator='BUYER') to commit to. The seller fulfils the offer.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
royaltyInfoNo
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
collectionIndexNo
drMutualizerAddressNoValid Ethereum address (e.g. '0xAbCd...' or '0xabcd...'). Mixed-case addresses are checksum-validated; all-lowercase and all-uppercase addresses are also accepted.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true. The description adds that the tool returns unsigned transaction data (not directly executing) and mentions the collateral prerequisite, providing behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences, front-loaded with the main action. Every sentence adds value: purpose, caller requirement, prerequisite, and return type. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate but incomplete given the 7-parameter complexity and no output schema. It mentions 'unsigned transaction data' but does not describe the structure of the response. It also fails to explain the prerequisite 'matching collateral' in detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 71% schema description coverage, the schema already documents most parameters. The tool description adds no additional parameter meaning; it does not elaborate on any of the 7 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fulfils', the resource 'buyer-initiated offer', and specifies the actor 'by the seller'. It distinguishes from siblings like 'commit_to_offer' by focusing on buyer-initiated offers (creator='BUYER').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage conditions: caller must be the seller and must provide matching collateral. It does not explicitly compare with alternative commit tools, but the buyer-initiated context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commit_to_conditional_offerA
Destructive
Inspect

Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's condition. Use this instead of commit_to_offer for offers created via create_offer_with_condition. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNoOptional buyer address if different from signerAddress. When set, executionMode must be 'direct'.
offerIdYesID of a conditional (token-gated) offer to commit to. Caller must hold the gating token specified by the offer's condition.
tokenIdYesToken ID of the gate token used to qualify for the conditional commit (relevant for ERC-721/1155 and TokenRange gating).
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context beyond annotations: it states the caller must hold the gating token (authorization requirement) and that it returns unsigned transaction data. Since annotations already declare destructiveHint=true and readOnlyHint=false, the description aligns and adds useful behavioral details without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no extraneous words. It front-loads the action, immediately gives usage guidance, and mentions the return type. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema, the description mentions 'Returns unsigned transaction data', which is crucial. It covers prerequisites and usage. With 6 parameters all detailed in the schema, and a conditional nature, the description is nearly complete, though it could note potential errors or edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description does not add significant meaning beyond what the schema already provides for each parameter. It restates the gating condition but does not elaborate on parameter usage or constraints beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Commits' and the specific resource 'token-gated (conditional) offer using a specific gating tokenId'. It distinguishes from siblings by explicitly saying 'Use this instead of commit_to_offer for offers created via create_offer_with_condition'. The purpose is unambiguous and well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'Use this instead of commit_to_offer for offers created via create_offer_with_condition'. It implies when not to use (for non-conditional offers) and states a prerequisite (caller must hold the gating token). However, it does not mention other sibling tools like commit_to_conditional_offer_and_redeem_voucher, which could be alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commit_to_conditional_offer_and_redeem_voucherA
Destructive
Inspect

Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must hold the gating token. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
offerIdYesID of a conditional (token-gated) offer to commit to and immediately redeem in a single transaction.
tokenIdYesToken ID of the gate token used to qualify for the conditional commit (relevant for ERC-721/1155 and SpecificToken / TokenRange gating).
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's mention of 'commits' and 'redeems' is consistent and adds no contradiction. However, it adds value by stating the tool returns 'unsigned transaction data', which is not in annotations. It does not detail side effects or permissions beyond the gating token, but the key behavioral aspects are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is just two sentences, front-loaded with the key action ('Atomically commits...'), immediately followed by a prerequisite and output. Every sentence is essential, with no filler. It is highly efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 5 parameters, no output schema, and many siblings, the description is brief but covers the core action, prerequisite, and return type. However, it lacks details on what 'commit' entails, the nature of 'unsigned transaction data' (raw hex?), and potential failure modes. Given the tool's atomic and destructive nature, more context would help the agent anticipate outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds little beyond the schema: it mentions 'using a specific gating tokenId' which ties to the tokenId parameter, but does not explain executionMode or signerAddress beyond what the schema provides. No additional parameter context is given, so the description meets the baseline without improvement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool atomically commits to a token-gated offer and redeems the voucher in a single transaction. 'Commit' and 'redeem' are specific actions, and 'token-gated' and 'conditional offer' differentiate it from similar tools like 'commit_to_offer_and_redeem_voucher' (non-conditional) and 'commit_to_conditional_offer' (commit only). The purpose is well-defined and distinct from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a prerequisite ('Buyer must hold the gating token') and mentions atomic execution, but does not give explicit guidance on when to use this tool versus alternatives like 'commit_to_conditional_offer' (if only commit is needed) or 'redeem_voucher' (if already committed). Given the large sibling set, more explicit when-to-use and when-not-to-use instructions would improve usability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commit_to_offerA
Destructive
Inspect

Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call approve_exchange_token first. In metaTx mode, you can skip the approval by passing transferAuthorizations (built with a sign_receive_with_* tool) to send_meta_transaction. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNoOptional buyer address if different from signerAddress. When set, executionMode must be 'direct'.
offerIdYesID of the active offer to commit to. Creates an exchange and mints a voucher NFT.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds material context beyond that: it clarifies the caller/signer model (signerAddress unless 'buyer' is set) and, crucially, that the tool 'Returns unsigned transaction data' rather than submitting — a behavior an agent must know to wire up signing correctly. It does not state irreversibility or failure modes, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with purpose, each conveying distinct operational information (effect, caller model, prerequisite, metaTx shortcut, return shape). Dense but no filler; only the metaTx sentence is slightly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly discloses the return shape ('unsigned transaction data'), covers the approval prerequisite, the gasless alternative, and the signer model. The remaining gap is routing versus the six sibling commit_* tools, which is significant given the crowded namespace.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes further by explaining the signerAddress-vs-buyer relationship and by pointing out that transferAuthorizations are built with a sign_receive_with_* tool, connecting parameters to the wider workflow in a way the schema alone does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Commits to') plus resource ('an offer') and adds the observable consequences: an exchange is created and a voucher NFT is minted. However, with siblings like commit_to_buyer_offer, commit_to_conditional_offer, and commit_to_offer_and_redeem_voucher, the description never explains what makes this the plain/base variant, so an agent cannot fully disambiguate from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives genuine sequencing guidance ('For ERC-20 offers, call approve_exchange_token first') and names the metaTx alternative path via send_meta_transaction. But it offers no guidance on when to choose this tool over the many sibling commit_* variants, which is the primary routing decision an agent faces here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commit_to_offer_and_redeem_voucherA
Destructive
Inspect

Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold any required ERC-20 allowance (approve_exchange_token), or, in metaTx mode, pass transferAuthorizations to send_meta_transaction. Skips voucher transferability and starts the dispute period clock immediately. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
offerIdYesID of the active offer to commit to and immediately redeem in a single transaction. Combines commit_to_offer + redeem_voucher via the OrchestrationHandler.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=true, so the description carries the real behavioral load: it discloses atomicity, that voucher transferability is skipped, that the dispute-period clock starts immediately, that it returns unsigned transaction data, and the allowance prerequisite. This is meaningful context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: the action leads, the precondition and mode-specific requirements follow, and the side effects plus return value close. Front-loaded and free of filler despite dense protocol terminology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with no output schema, the description covers the precondition, atomic side effects, and return format ('unsigned transaction data'), which is sufficient to invoke it correctly. It stops short of explaining the direct-vs-metaTx resolution flow, which the schema's enum description partly covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (including the executionMode enum with direct/metaTx) are already documented. The description reinforces signerAddress behavior but adds little parameter syntax or format beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific compound verb+resource: atomically commits to an offer and immediately redeems the voucher in one transaction. This clearly distinguishes it from the single-action sibling commit_to_offer and signals its relationship to commit_to_conditional_offer_and_redeem_voucher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete precondition (buyer must already hold ERC-20 allowance via approve_exchange_token, or pass transferAuthorizations in metaTx mode) and names the helper tools involved. However, it never explicitly says when to prefer this over commit_to_offer followed by redeem_voucher separately, so routing among the commit variants is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_exchangeA
Destructive
Inspect

Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post-redemption. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations confirm destructiveHint=true, and the description adds valuable behavioral context: it releases funds, can be called by different roles, and returns unsigned transaction data. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler, front-loaded with the core purpose, structured efficiently to convey key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, caller roles, and return type. It lacks details on prerequisites or error states, but given the tool's specialization and good annotations, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The tool description adds no extra semantic value beyond what the schema provides, justifying the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'completes an exchange' and the resource 'exchange', with specific conditions (after dispute period, releasing funds). It distinguishes from sibling dispute-related tools by specifying timing and caller roles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use: seller after dispute period, buyer anytime post-redemption. It does not explicitly list alternatives or when not to use, but the conditional hints are sufficient for basic guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_buyerA
Destructive
Inspect

Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true and readOnlyHint=false, implying a write operation. The description adds 'Returns unsigned transaction data,' which is a key behavioral trait—this tool does not execute the transaction but returns data for signing. However, it does not elaborate on the destructiveness (e.g., whether account creation is irreversible) beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that convey purpose, prerequisite context, and return type. Every sentence adds value without redundancy or wordiness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema), the description fully covers the essential aspects: purpose, when to use, prerequisites, and what it returns ('unsigned transaction data'). No gaps remain for an agent to misunderstand.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters have 100% schema description coverage with detailed explanations (e.g., configId format, signerAddress requirement). The tool description reiterates the signerAddress's role ('for signerAddress') but adds no new meaning 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Creates a buyer account') and the specific actor ('signerAddress'). It distinguishes this tool from siblings like 'create_seller' and 'commit_to_buyer_offer' by explaining its prerequisite role: 'Required before a buyer can commit to seller-initiated offers for the first time.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool ('before a buyer can commit to seller-initiated offers for the first time') and notes there are 'No prerequisites.' It does not explicitly state when not to use it or compare to alternatives, but the context is clear enough for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_dispute_resolution_proposalA
Read-only
Inspect

Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their wallet (EIP-712) before calling resolve_dispute. Returns: typed data structure (domain, types, message).

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
buyerPercentBasisPointsYesProposed percentage of disputed funds for the buyer, 0–10000 (basis points). The counterparty must sign this same value.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating a read-only operation. The description adds behavioral context: the tool generates data to be signed, and both parties must sign before resolve_dispute. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Front-loaded with action and returns. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Describes output as typed data structure, mentions signing requirement. Lacks explicit instructions on how to use the returned data (e.g., calling eth_signTypedData_v4), but sufficient for the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The description adds process context (e.g., buyerPercentBasisPoints must be signed by counterparty) but does not significantly add beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool generates EIP-712 typed data for a mutual dispute resolution proposal. Mentions prerequisite of both parties signing the same value. Does not explicitly differentiate from siblings like 'resolve_dispute' or 'decide_dispute', but purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs that both buyer and seller must sign the same buyerPercentBasisPoints value before calling resolve_dispute. Provides clear context but does not mention when not to use this tool or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_offerA
Destructive
Inspect

Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_base_metadata to get metadataUri/metadataHash. All dates in milliseconds; amounts as strings in wei. Returns unsigned tx — sign locally with your wallet → send_signed_transaction, or executionMode='metaTx'.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesOffer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH.
agentIdNoOptional dACP agent facilitating this offer. Omit or pass '0' if no agent.
creatorNo'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
feeLimitNoMax protocol fee the seller accepts in same token unit. Pass as string.
priceTypeNo0 = static price, 1 = discovery price (auction).
metadataUriYesIPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata.
royaltyInfoNo
metadataHashYesKeccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
sellerDepositYesSeller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
collectionIndexNoIndex of the seller's NFT collection for vouchers. Omit to use default (index 0).
disputeResolverIdNoID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers.
quantityAvailableYesHow many times this offer can be committed to. Must be 1 when creator='BUYER'.
validFromDateInMSYesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
validUntilDateInMSYesUnix timestamp in milliseconds when the offer can no longer be committed to.
drMutualizerAddressNoOptional dispute resolver mutualizer contract address that pools resolution funds.
exchangeTokenAddressNoERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values.
buyerCancellationPenaltyYesAmount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string.
voucherValidDurationInMSYesVoucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead.
disputePeriodDurationInMSYesDuration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days.
resolutionPeriodDurationInMSYesDuration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days.
voucherRedeemableFromDateInMSYesTimestamp in ms from which buyer can redeem. Must be >= validFromDateInMS.
voucherRedeemableUntilDateInMSYesTimestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructive=true and readOnly=false. The description adds that the tool returns an unsigned transaction and describes two execution modes (direct/metaTx), which are important behavioral details not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, front-loaded with the action and resource, and every sentence adds value (prerequisites, formats, output handling). No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description clearly explains the return value (unsigned tx) and how to proceed, which is sufficient for a complex tool with 25 parameters. Prerequisites and format details are covered, making it complete for the given complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 96%, so the description adds minimal parameter-level detail. It mentions date and amount formats (dates in ms, amounts as strings in wei) but most parameters are well-documented in the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Creates a product offer', identifying the verb and resource. It also distinguishes from siblings like create_offer_and_commit by noting that this tool returns an unsigned transaction for local signing, implying that other tools handle commitment automatically. However, it does not explicitly name alternatives, so it gets a 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides prerequisites (seller account, metadata storage) and explains when to use this tool versus alternatives (e.g., for local signing vs metaTx). It does not explicitly list exclusions, but the context is clear enough for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_offer_and_commitA
Destructive
Inspect

Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally with your wallet (EIP-712), and provide the signature here. Used for private/bilateral trades. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesOffer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH.
agentIdNoOptional dACP agent facilitating this offer. Omit or pass '0' if no agent.
buyerIdYesNumeric ID of the buyer entity. Use '0' for seller-initiated offers.
creatorNo'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
feeLimitNoMax protocol fee the seller accepts in same token unit. Pass as string.
sellerIdYesNumeric ID of the seller entity. Obtain via get_sellers_by_address.
committerYesEthereum address of the buyer committing in the same transaction.
conditionNo
priceTypeNo0 = static price, 1 = discovery price (auction).
signatureYesECDSA signature over the offer typed data. Workflow: sign_full_offer → sign the returned typed data locally with your wallet (EIP-712) → use result here.
metadataUriYesIPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata.
royaltyInfoNo
metadataHashYesKeccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools.
offerCreatorYesEthereum address of the seller creating this non-listed offer. Must match the seller's assistant address.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
sellerDepositYesSeller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
collectionIndexNoIndex of the seller's NFT collection for vouchers. Omit to use default (index 0).
disputeResolverIdNoID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers.
quantityAvailableYesHow many times this offer can be committed to. Must be 1 when creator='BUYER'.
useDepositedFundsNoIf true, use funds already deposited in the protocol treasury instead of transferring from the wallet.
validFromDateInMSYesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
conditionalTokenIdNoOptional token ID of the NFT gate token used by this specific commit (for SpecificToken gating type).
validUntilDateInMSYesUnix timestamp in milliseconds when the offer can no longer be committed to.
drMutualizerAddressNoOptional dispute resolver mutualizer contract address that pools resolution funds.
exchangeTokenAddressNoERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values.
buyerCancellationPenaltyYesAmount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string.
voucherValidDurationInMSYesVoucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead.
disputePeriodDurationInMSYesDuration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days.
resolutionPeriodDurationInMSYesDuration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days.
voucherRedeemableFromDateInMSYesTimestamp in ms from which buyer can redeem. Must be >= validFromDateInMS.
voucherRedeemableUntilDateInMSYesTimestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint: true (mutation) and readOnlyHint: false. The description adds atomicity, return type (unsigned transaction data), and the requirement for a signed signature, which provides some behavioral insight beyond annotations. It does not detail failure modes or the need for subsequent signing/sending, but the added value is moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loading the core purpose and then providing the prerequisite and return type. Every sentence adds value, with no unnecessary words or redundancies.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (33 parameters, 20 required, nested objects, no output schema), the description is relatively brief. It covers the atomic nature, prerequisite, and return type, but it omits guidance on what to do with the unsigned transaction data (e.g., call send_signed_transaction or send_meta_transaction based on executionMode) and does not explain the overall workflow beyond the prerequisite.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 94%, so the schema already documents most parameters. The description adds context for the 'signature' parameter by linking it to the prerequisite workflow, but otherwise repeats no parameter details. This meets the baseline expectation for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool atomically creates a private offer and commits a buyer in one transaction, explicitly mentioning private/bilateral trades. It distinguishes from siblings by specifying the atomic combo and prerequisite, which is unique among related tools like 'commit_to_offer' or 'create_offer'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage context ('private/bilateral trades') and a prerequisite ('call sign_full_offer...'), helping the agent understand when to use it. However, it does not explicitly contrast with alternatives (e.g., using 'create_offer' then 'commit_to_offer' separately) or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_offer_commit_and_redeemA
Destructive
Inspect

Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same prerequisites as create_offer_and_commit (sign_full_offer + EIP-712 signature). Use for instant-fulfilment private trades. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesOffer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH.
agentIdNoOptional dACP agent facilitating this offer. Omit or pass '0' if no agent.
buyerIdYesNumeric ID of the buyer entity. Use '0' for seller-initiated offers.
creatorNo'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
feeLimitNoMax protocol fee the seller accepts in same token unit. Pass as string.
sellerIdYesNumeric ID of the seller entity. Obtain via get_sellers_by_address.
committerYesEthereum address of the buyer committing in the same transaction.
conditionNo
priceTypeNo0 = static price, 1 = discovery price (auction).
signatureYesECDSA signature over the offer typed data. Workflow: sign_full_offer → sign the returned typed data locally with your wallet (EIP-712) → use result here.
metadataUriYesIPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata.
royaltyInfoNo
metadataHashYesKeccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools.
offerCreatorYesEthereum address of the seller creating this non-listed offer. Must match the seller's assistant address.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
sellerDepositYesSeller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
collectionIndexNoIndex of the seller's NFT collection for vouchers. Omit to use default (index 0).
disputeResolverIdNoID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers.
quantityAvailableYesHow many times this offer can be committed to. Must be 1 when creator='BUYER'.
useDepositedFundsNoIf true, use funds already deposited in the protocol treasury instead of transferring from the wallet.
validFromDateInMSYesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
conditionalTokenIdNoOptional token ID of the NFT gate token used by this specific commit (for SpecificToken gating type).
validUntilDateInMSYesUnix timestamp in milliseconds when the offer can no longer be committed to.
drMutualizerAddressNoOptional dispute resolver mutualizer contract address that pools resolution funds.
exchangeTokenAddressNoERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values.
buyerCancellationPenaltyYesAmount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string.
voucherValidDurationInMSYesVoucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead.
disputePeriodDurationInMSYesDuration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days.
resolutionPeriodDurationInMSYesDuration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days.
voucherRedeemableFromDateInMSYesTimestamp in ms from which buyer can redeem. Must be >= validFromDateInMS.
voucherRedeemableUntilDateInMSYesTimestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, so the agent knows it's a write operation. The description adds that the operation is atomic, performed via OrchestrationHandler, and returns unsigned transaction data (implying a subsequent signing step). This context is useful but does not elaborate on potential side effects (e.g., fund requirements, reverting conditions).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences that efficiently convey the core action, prerequisites, use case, and return type. It front-loads the atomic nature and avoids extraneous details, earning a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (33 parameters, no output schema), the description is brief and covers the essential purpose. However, it does not explain how to handle the returned unsigned transaction data or that this tool replaces separate create/commit/redeem calls. For such a complex tool, the description could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 94%, so the input schema already documents most parameters thoroughly. The description does not add further parameter-level details beyond referencing prerequisites. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool atomically creates a private offer, commits a buyer, and redeems the voucher. It names the OrchestrationHandler and distinguishes from create_offer_and_commit by noting the same prerequisites and the additional redemption step. However, it does not explicitly differentiate from other commit+redeem sibling tools like commit_to_offer_and_redeem_voucher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies 'Use for instant-fulfilment private trades' and mentions prerequisites (sign_full_offer + EIP-712 signature). It provides a clear use case but lacks explicit guidance on when not to use this tool versus alternatives (e.g., when delayed redemption is acceptable, use create_offer_and_commit instead).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_offer_with_conditionA
Destructive
Inspect

Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token, method, and threshold. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesOffer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH.
agentIdNoOptional dACP agent facilitating this offer. Omit or pass '0' if no agent.
creatorNo'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
feeLimitNoMax protocol fee the seller accepts in same token unit. Pass as string.
conditionYes
priceTypeNo0 = static price, 1 = discovery price (auction).
metadataUriYesIPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata.
royaltyInfoNo
metadataHashYesKeccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
sellerDepositYesSeller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
collectionIndexNoIndex of the seller's NFT collection for vouchers. Omit to use default (index 0).
disputeResolverIdNoID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers.
quantityAvailableYesHow many times this offer can be committed to. Must be 1 when creator='BUYER'.
validFromDateInMSYesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
validUntilDateInMSYesUnix timestamp in milliseconds when the offer can no longer be committed to.
drMutualizerAddressNoOptional dispute resolver mutualizer contract address that pools resolution funds.
exchangeTokenAddressNoERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values.
buyerCancellationPenaltyYesAmount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string.
voucherValidDurationInMSYesVoucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead.
disputePeriodDurationInMSYesDuration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days.
resolutionPeriodDurationInMSYesDuration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days.
voucherRedeemableFromDateInMSYesTimestamp in ms from which buyer can redeem. Must be >= validFromDateInMS.
voucherRedeemableUntilDateInMSYesTimestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already label the tool as destructive (destructiveHint=true). The description adds that it returns unsigned transaction data, which is useful for workflow understanding. However, it does not disclose permissions, reversibility, or other behavioral traits beyond the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, efficient and front-loaded. Every sentence adds value: purpose, prerequisites, and return type. No unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (26 params, nested objects, no output schema), the description gives a clear overview and links to prerequisites. Schema covers details. Missing error conditions or examples, but adequate for the complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (92%), so the schema already documents most parameters. The description provides a high-level summary for the condition parameter but adds little value 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'creates', the resource 'offer gated by token-ownership', and distinguishes from the sibling 'create_offer' by explicitly mentioning the additional 'condition object'. It also specifies the return type (unsigned transaction data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates that this tool shares prerequisites with 'create_offer' and requires a condition object, which implies usage for token-gated offers. It differentiates from the sibling tool but does not provide explicit when-not-to-use or alternative tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_sellerA
Destructive
Inspect

Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide seller metadata and royaltyPercentage. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
nameNo
typeYes
imagesNo
websiteNo
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
authTokenIdYesNFT token ID used as auth token (e.g. Lens profile ID). Pass '0' if not using auth tokens.
contractUriNoOptional URI for OpenSea-style storefront metadata (defaults to empty string, meaning none). When set, it is fetched to copy it to The Graph's IPFS node, so it must be an ipfs:// URI, a CID, or an http(s) URL returning JSON.
descriptionNo
socialLinksNo
contactLinksNo
authTokenTypeYesAuth token type: 0=None, 1=Lens Protocol profile NFT.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
salesChannelsNo
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
legalTradingNameNo
contactPreferenceYes
royaltyPercentageYesDefault resale royalty in basis points (0–10000). Applied to all offers unless overridden.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint=true/write annotations, the description discloses two non-obvious behaviors: signerAddress is auto-assigned as admin/assistant/treasury, and the tool returns unsigned transaction data rather than executing on-chain. This tells the agent a follow-up sign/send step is required. It does not flag irreversibility of the on-chain account creation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the purpose, then prerequisite, behavior, and inputs. Generally efficient, though "Provide seller metadata and royaltyPercentage" adds little beyond what the schema already conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter creation tool with no output schema and low schema coverage, the description covers the transaction-return behavior but omits guidance on many required structural parameters. An agent would still rely heavily on the schema and guesswork for fields like type and kind.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 39% across 18 parameters. The description only re-mentions royaltyPercentage and signerAddress (already documented in the schema) and vaguely says "Provide seller metadata," leaving required params like type, kind, contactPreference, authTokenId, and authTokenType unexplained in both places. It fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Creates a seller account on Boson Protocol") and frames its role as a prerequisite for offers. It is clearly distinguishable from create_buyer and create_offer, though it does not explicitly contrast with update_seller, which would have earned a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Required before creating any offers" provides clear, actionable context for when this tool is needed. It stops short of naming exclusions or the alternative (update_seller for existing accounts), so it does not reach a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decide_disputeA
Destructive
Inspect

Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to seller, 10000=all to buyer). Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
buyerPercentYesPercentage of disputed funds to buyer in basis points (0–10000). 10000 = all to buyer, 0 = all to seller.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true, which the description supports with 'Decides'. It adds valuable context: caller role and return of unsigned transaction data. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, then caller condition, then parameter detail, then output. No fluff, each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 required params, no output schema, and destructive nature, the description covers purpose, caller, parameter meaning, and return. Missing details about error cases or authorization failure, but sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 4 parameters. The description adds minor extra context (basis points range for buyerPercent, format for configId) but does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Decides an escalated dispute' with specific conditions (caller must be resolver) and return value (unsigned transaction data). This distinguishes it from sibling dispute tools like raise_dispute, escalate_dispute, expire_dispute, resolve_dispute.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the caller must be the dispute resolver and explains the buyerPercent parameter meaning. It does not explicitly contrast with alternative dispute actions, but the resolver role provides clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deposit_fundsA
Destructive
Inspect

Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you can skip the approval by passing transferAuthorizations (built with a sign_receive_with_* tool) to send_meta_transaction. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in wei. For ERC-20, approve_exchange_token must be called first, unless relaying in metaTx mode with transferAuthorizations passed to send_meta_transaction. Pass as string.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
entityIdYesNumeric ID of the entity to credit. Must match signerAddress's seller account.
tokenAddressYesERC-20 token to deposit. Use address(0) for native ETH.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds real behavioral context beyond them: the approval prerequisite, the gasless metaTx bypass, and that the call returns unsigned transaction data. It does not discuss failure/revert conditions or what happens to treasury state, so not a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero waste, front-loaded with purpose then prerequisites then return value. Dense tool references (approve_exchange_token, sign_receive_with_*) are necessary for chaining rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-param destructive write with no output schema, the description covers purpose, prerequisites, alternate execution paths, and the return shape. Minor gaps remain around error/revert behavior and whether the returned unsigned tx must be relayed via send_signed_transaction in direct mode.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (including tokenAddress's address(0) convention and executionMode's enum) is already documented in the schema. The description restates the approval/metaTx dependency for amount but adds no syntax or format detail beyond what the schema provides — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (deposits ERC-20 or native tokens into an entity's protocol treasury) and immediately names the concrete use case (seller deposit). An agent can distinguish it from sibling withdraw_funds and from the approve/transfer helpers without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes prerequisites: 'For ERC-20, call approve_exchange_token first,' and gives the alternate path — skip approval in metaTx mode by passing transferAuthorizations to send_meta_transaction. This names the sibling tools and the condition that selects each path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

escalate_disputeA
Destructive
Inspect

Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructive write operation. Description adds context beyond annotations: explains role requirement, fee coverage, and return of unsigned transaction data. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, no fluff. Core action, conditions, and return value stated upfront. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 params and no output schema, description provides role and fee prerequisites, and return type. Could include note about multi-step process (sign then send), but adequate for a focused escalation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented in input schema. Description adds only vague context (e.g., exchangeId likely is dispute ID). Return type mentioned but not a parameter. Baseline of 3 warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Escalates a stale dispute'), specifies caller role, fee condition, and return type. Verb 'escalates' and resource 'dispute' are precise, and it distinguishes from siblings like raise_dispute or decide_dispute.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States explicit prerequisites: caller must be buyer, resolver's fee must be covered. Implicitly guides when to use (stale disputes needing third-party). Could explicitly mention alternatives (e.g., 'Use raise_dispute for non-stale disputes').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

expire_disputeA
Destructive
Inspect

Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint=true), the description adds that the tool is permissionless and returns unsigned transaction data, giving useful behavioral context. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler. Every sentence provides essential information: action, permission, condition, output. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the tool's purpose, prerequisites, and return type (unsigned transaction). It could detail the return format more, but overall it is sufficiently complete for a simple state-transition tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add parameter-level meaning beyond what is in the schema; the conditions mentioned ('Disputed' state, timeout) are context for the exchangeId parameter but not detailed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (marks a dispute as expired), the resource (dispute), and the conditions (resolution period passed, 'Disputed' state past timeout). It distinguishes from sibling tools like expire_dispute_batch and expire_escalated_dispute through specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies that the tool is permissionless and requires the exchange to be in 'Disputed' state past its timeout, providing clear when-to-use guidance. However, it does not explicitly state when not to use it or compare with alternatives like escalate_dispute.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

expire_dispute_batchA
Destructive
Inspect

Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdsYesArray of exchange IDs whose dispute period has passed. All must be in 'Disputed' state past their timeout.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructive=true), the description adds preconditions (exchanges must be in 'Disputed' state past timeouts), permissionless access, and return type (unsigned transaction data). This provides useful behavioral context beyond what annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The first sentence immediately states the action and scope, making it efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description mentions the return type (unsigned tx data). Preconditions are stated. Could include error scenarios or batch behavior, but overall sufficient for a clear tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add significant new meaning beyond the schema; it restates the precondition for exchangeIds but no additional parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Marks') and resource ('expired disputes') and clearly indicates this is a batch operation. It distinguishes from sibling tools like expire_dispute (single) and expire_escalated_dispute by specifying batch and transaction context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for multiple disputes but does not explicitly contrast with expire_dispute or when-not-to-use. It states 'Permissionless' but lacks guidance on trade-offs between batch and single calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

expire_escalated_disputeA
Destructive
Inspect

Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true; the description adds that it returns unsigned transaction data and is permissionless, providing useful context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no waste, front-loaded with the main action and condition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the schema, annotations, and no output schema, the description fully covers the tool's purpose, behavior, and return type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description does not add further meaning to the parameters beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool expires an escalated dispute when the resolver's response period passes without a decision, distinguishing it from sibling tools like 'expire_dispute' or 'escalate_dispute'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies the condition for use (response period passed) and that it's permissionless, but does not explicitly list when not to use it or mention alternative dispute tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extend_dispute_timeoutA
Destructive
Inspect

Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
newDisputeTimeoutYesNew absolute Unix timestamp in SECONDS (not ms) for the dispute deadline. Must be later than current timeout.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true, and description adds vital behavioral context: returns unsigned transaction data (not executed directly), requires Resolving state, and is callable by either party. This goes beyond annotations, though permissions or side effects are not fully detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each adding value. Front-loaded with action, then state requirement, then caller permission, then return type. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers state prerequisite, caller roles, and return type (unsigned tx). Lacks error handling details (e.g., what happens if dispute not in Resolving state). Siblings provide adjacent tools for signing/sending, so overall context is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 5 parameters have schema descriptions (100% coverage), so parameter semantics are well-covered. Description adds state constraint but does not significantly enhance parameter understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb+resource: 'Extends the deadline of an active dispute.' Specifies required state ('Dispute must be in 'Resolving' state') and explicitly distinguishes from siblings like escalate_dispute and expire_dispute.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides context (dispute must be in Resolving state, either party can call) but does not explicitly discuss when not to use this tool or compare to alternatives like escalate_dispute or expire_dispute. No exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_products_with_not_voided_variantsA
Read-only
Inspect

Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
productsSkipNo
productsFirstNo
productsFilterNo
productsOrderByNo
productsOrderDirectionNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, and the description adds behavioral details like pagination and ordering support, as well as the data source (Boson subgraph). 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three efficient sentences, front-loading the purpose. The mention of 'Read-only' is redundant with annotations but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks explanation of output structure or return value since no output schema. For a tool with six parameters and no output schema, more detail on what the tool returns would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17%, and the description only broadly mentions 'Supports pagination and ordering' without explaining the specific parameters (e.g., productsFilter, productsOrderBy enum values). Minimal added value for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a clear verb ('Reads') and resource ('product groupings with at least one non-voided variant from the Boson subgraph'), distinguishing it from sibling tools like 'search_products'. The title 'Get Products (Active Variants)' reinforces this.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes 'Useful for storefront displays', giving clear context. However, it does not explicitly mention when not to use or mention alternative tools like search_products for broad searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_config_idsA
Read-only
Inspect

Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description adds that no auth is required, which is useful beyond the structured data. It also states what it returns (valid configId values), making 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no extraneous information. It is front-loaded with the core purpose and immediately gives usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, no output schema) and the rich annotations, the description is complete. It explains what it returns and when to use it, which is adequate 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.

Parameters4/5

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%. According to the guidelines, 0 params yields a baseline of 4. No additional parameter description is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns all valid configId values and that it should be called first to discover which network/deployment to use. This distinguishes it from sibling tools which are mostly transactional.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call first to discover which network/deployment to use,' providing clear context for when to use this tool. It does not list alternatives or when not to use it, but for a discovery tool this is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dispute_by_idA
Read-only
Inspect

Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
disputeIdYesNumeric ID of the dispute to retrieve. Note: disputeId equals the exchangeId of the associated exchange.
queryVarsNoOptional additional subgraph query variables for field selection. Leave empty for default fields.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds value beyond readOnlyHint by describing the returned entity (state, timeout, buyerPercent) and noting disputeId equals exchangeId. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with action and key details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Sufficiently complete for a read-only retrieval tool with good annotations; mentions return fields and usage hint. Could add non-existence behavior but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds meaning by clarifying disputeId equals exchangeId, slightly exceeding baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it reads a single dispute by ID, specifies that ID equals exchangeId, and distinguishes from get_disputes for searching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to use get_disputes to search first, providing clear context on when to use this tool versus its sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dispute_resolversA
Read-only
Inspect

Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, escalationResponsePeriod, and supported tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
disputeResolversSkipNo
disputeResolversFirstNo
disputeResolversFilterNo
disputeResolversOrderByNo
disputeResolversOrderDirectionNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true; description reinforces 'Read-only' and details the return structure (array with ID, fees, etc.), adding value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences, front-loaded with purpose and usage. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 6 parameters (including a nested filter object), no output schema, and complex sibling context, the description only covers return fields. Missing parameter guidance and behavioral details like pagination or ordering semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (17%) and description does not explain any parameters. It only describes output, leaving the meaning of skip, first, filter, orderBy, etc. entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it reads registered dispute resolver entities and provides a specific use case (finding valid disputeResolverId for create_offer). However, it does not differentiate itself from many sibling tools that also read entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool: to find a valid disputeResolverId for create_offer. No guidance on when not to use or alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_disputesA
Read-only
Inspect

Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities with exchangeId, state, timeout.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
disputesSkipNo
disputesFirstNo
disputesFilterNo
disputesOrderByNo
disputesOrderDirectionNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds 'Read-only' and describes the return type with specific fields. No contradictions. However, it does not disclose additional behavioral traits like rate limits or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that front-load the purpose and key capabilities. Every sentence adds value, though including a brief sibling differentiation would improve structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of sibling tools for dispute management, the description does not explain that this tool lists multiple disputes (as opposed to get_dispute_by_id). It covers pagination and filtering but lacks details on configId requirement and output schema. Adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 17% schema description coverage, the description adds high-level meaning (pagination, ordering, filtering by buyer/seller/state) but does not detail individual parameters like configId, disputesSkip, or the filter object structure. Provides some context but insufficient to fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Reads dispute records from the Boson subgraph', which is a specific verb and resource. It distinguishes itself from sibling tools like get_dispute_by_id (single record) and mutation tools by indicating it is a read operation returning an array.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions pagination, ordering, and filtering features but does not provide explicit guidance on when to use this tool versus alternatives like get_dispute_by_id or when to avoid it. The usage context is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_exchangesA
Read-only
Inspect

Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Committed/Redeemed/Completed/Disputed/Cancelled/Revoked), and voucher details.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangesSkipNo
exchangesFirstNo
exchangesFilterNo
exchangesOrderByNo
exchangesOrderDirectionNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reinforces the readOnlyHint annotation and adds return format details, providing behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three clear sentences front-load the purpose, with no unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main functionality and return structure but lacks details on pagination and ordering parameters, given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 17% schema coverage, the description adds context on filtering but does not explain pagination (skip/first) or ordering parameters, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads exchange records from the Boson subgraph, lists filtering options (buyer/seller/state), and distinguishes from write operations among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies read-only usage but does not explicitly state when to use this tool versus alternatives or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fundsA
Read-only
Inspect

Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Returns: array of { tokenAddress, availableAmount, accountId }.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
fundsSkipNo
fundsFirstNo
fundsFilterNo
fundsOrderByNo
fundsOrderDirectionNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true; description adds that signer is not needed and describes return format and pagination/filtering behavior. Provides 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each adding value. Front-loaded with purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description specifies return array shape. Complexity is moderate (6 parameters); description covers core behavior and return format, though lacks parameter details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (17%), description mentions pagination/ordering/filtering but does not detail parameters individually. Provides high-level meaning but lacks specifics for fundsSkip, fundsFirst, fundsFilter, fundsOrderBy, fundsOrderDirection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it reads treasury fund balances from the Boson subgraph, distinguishing it from sibling mutation tools like deposit_funds and withdraw_funds. The verb 'reads' and resource 'treasury fund balances' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly notes read-only nature and that signerAddress is not required, guiding when to use. Mentions pagination/ordering/filtering support, but does not explicitly contrast with other query tools like get_sellers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_offersA
Read-only
Inspect

Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, deposit, dates, and quantity.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
offersSkipNo
offersFirstNo
offersFilterNo
exchangesSkipNo
offersOrderByNo
exchangesFirstNo
exchangesFilterNo
exchangesOrderByNo
includeExchangesNo
offersOrderDirectionNo
exchangesOrderDirectionNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

ReadOnlyHint annotation is already present; description reinforces read-only nature and specifies return structure (array with key fields). Adds value beyond annotation by describing output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, efficiently communicates purpose and key features. Could be improved with bullet points or structured breakdown but remains concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, description only lists a few output fields and omits nested object behavior. Does not cover pagination defaults or parameter semantics adequately for such a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 8% (only configId described). Description mentions pagination, ordering, filtering generically but does not explain specific parameters (skip, first, orderBy, filter). Vague for 12-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it reads offer listings from a specific subgraph. Verb 'Reads' and resource 'offer listings' are specific. Differentiates from sibling read tools (e.g., get_exchanges) by targeting offers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage when needing offer listings but does not provide explicit when-to-use or when-not-to-use guidance. No mention of alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_registered_agentsA
Read-only
Inspect

Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true. Description adds 'No auth required' but no further behavioral detail. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences, front-loaded with purpose, zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Describes return values (agents, entities, roles) but lacks output schema or example. Adequate for simple read operation given annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with full description for configId. Description adds no additional parameter context, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it returns all registered dACP agents, listing associated protocol entities and roles, distinct from siblings like register_agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'No auth required', providing a key usage constraint. Does not explicitly contrast with alternative tools, but the read-only nature is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sellersB
Read-only
Inspect

Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entities with addresses and metadataUri.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
includeLogsNo
sellersSkipNo
includeFundsNo
sellersFirstNo
includeOffersNo
sellersFilterNo
sellersOrderByNo
includeExchangesNo
sellersOrderDirectionNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description's 'Read-only' adds no new behavioral insight. There is no mention of rate limits, data freshness, pagination limits, or any side effects. Beyond the safety hint, the description contributes little 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action, and every word adds value. It efficiently communicates purpose, optionality, and output format without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 10 parameters (1 required, no output schema), the description is insufficient. It does not explain pagination (sellersSkip, sellersFirst), filtering (sellersFilter), ordering (sellersOrderBy, sellersOrderDirection), or the structure of included entities. For a complex query tool, more detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 10%, with only configId having a full description. The description vaguely mentions 'Optionally includes related offers, exchanges, funds, and logs' but does not elaborate on the meaning of parameters like includeLogs, sellersSkip, sellersFilter, or sellersOrderBy. It fails to compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads seller account entities from the Boson subgraph, optionally including related data. It distinguishes itself from sibling tools like get_sellers_by_address (which filters by address) and update_seller (which writes). The verb 'Reads' and resource 'seller account entities' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It mentions optional includes but lacks guidance on when to choose get_sellers over get_sellers_by_address or other read tools. No exclusion criteria or context for selection is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sellers_by_addressA
Read-only
Inspect

Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller. Read-only. Returns: array of seller entities.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
includeLogsNo
sellersSkipNo
includeFundsNo
sellersFirstNo
includeOffersNo
sellersFilterNo
sellersOrderByNo
includeExchangesNo
sellersOrderDirectionNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states 'Read-only' which aligns with the readOnlyHint annotation. It also adds the return type ('array of seller entities'), providing value beyond annotations. No contradictions found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences) and front-loaded with the core purpose. Every sentence adds value: the first states what it does, the second explains when to use it, the third clarifies idempotency and return type.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high parameter count and no output schema, the description is incomplete. It lacks guidance on optional parameters like includeLogs, sellersFilter, pagination, and ordering. The agent would struggle to use this tool correctly without additional inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 9% schema description coverage and 11 parameters, the description adds no parameter-level explanations. The address parameter is implied but not detailed. The configId parameter is described in the schema but not in the description. This is insufficient for an agent to select the correct parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads seller entities for a specific Ethereum address and explicitly distinguishes its use case: checking if a signerAddress exists before calling create_seller. This contrasts with sibling tools like create_seller, update_seller, or get_sellers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a specific usage scenario (before create_seller) and implies a context (checking existence). However, it does not explicitly state when not to use this tool or mention alternatives like get_sellers, though the sibling list includes that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supported_tokensA
Read-only
Inspect

Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-only. Returns: array of { address, name, symbol, decimals }.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description's 'Read-only' confirms this. The description adds transparency about the return format (array of objects with address, name, symbol, decimals) and that it is safe (no side effects). No contradictory or missing behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences covering purpose, usage guidance, read-only nature, and return format. Every sentence serves a purpose, with no redundancy. It is front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter, no output schema, and annotations provide read-only hint, the description fully explains what the tool does, how to use the result, and what the return value contains. It leaves no gaps for an AI agent to misunderstand.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a detailed description for configId. The description does not add new parameter-level information beyond what the schema provides, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Returns'), resource ('ERC-20 tokens accepted as exchange tokens'), and scope ('on the given configId deployment'). It distinguishes from sibling tools by specifying it is for querying tokens, not mutating them, and gives usage context ('Use returned addresses in exchangeTokenAddress fields of create_offer').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool: to obtain token addresses for create_offer. It marks the operation as read-only, implying safe invocation. However, it does not explicitly mention when not to use it or list alternatives, though the sibling list includes many mutation tools, making the distinction clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

raise_disputeA
Destructive
Inspect

Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true; the description adds useful behavioral traits: the constraint that only the buyer can call, the time window, and the return of unsigned transaction data. It does not contradict annotations. It is transparent about the mutation but could detail side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: action+resource, constraints, and output. No redundant information. Every sentence earns its place, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters and no output schema, the description covers the essential purpose, constraints, and return type. It could mention that the returned unsigned transaction data needs to be signed and sent (e.g., via send_signed_transaction), but the sibling tool set implies this. Overall, adequate for a straightforward mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with good parameter descriptions. The tool description adds no additional per-parameter semantics beyond the schema, which is adequate. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Raises a dispute on a redeemed exchange') and uniquely distinguishes this tool from siblings like 'retract_dispute', 'escalate_dispute', etc., by stating it is the initial action of raising, with clear constraints (caller must be buyer, must be within disputePeriodDurationInMS).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use (after redemption, within a time window) and who can call (buyer), providing clear context. However, it does not mention when not to use or list alternatives (e.g., if the dispute already exists), which would strengthen the guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redeem_voucherA
Destructive
Inspect

Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeriodDurationInMS to raise a dispute. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true. The description adds that the caller must be the buyer, that the dispute period starts, and that it returns unsigned transaction data, providing useful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, no redundancy. The action and key details are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the purpose, preconditions, effect, and output format (unsigned transaction data). No output schema exists, but the description compensates adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The tool description does not add additional parameter-level information, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Redeems a voucher'), the context (signalling physical receipt, starting dispute period), and what it returns (unsigned transaction data). It differentiates from sibling tools that combine redeem with other steps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the caller must be the buyer and explains the consequence (dispute period starts). While it doesn't list alternatives or exclusions, the precondition and effect are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refuse_escalated_disputeA
Destructive
Inspect

Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true. The description adds context about returning unsigned transaction data, resetting state to 'Resolving', and returning the fee, which is beyond what annotations provide. However, it does not disclose authorization requirements or potential side effects beyond what is stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no wasted words. It front-loads the purpose and then lists effects and return value efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 3 parameters, no output schema, and annotations present, the description covers the action and its outcomes. It could mention that the returned unsigned transaction data is typically sent via 'send_signed_transaction', but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for all three parameters. The description does not add meaningful semantic information beyond what the schema already provides (e.g., configId format, exchangeId source, signerAddress purpose). Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'refuses to decide an escalated dispute' and specifies the effects: returning the escalation fee, resetting dispute state, and returning unsigned transaction data. This distinguishes it from related tools like 'decide_dispute' or 'escalate_dispute'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a dispute resolver opts not to decide, but does not explicitly state when to use versus alternatives (e.g., 'decide_dispute' or 'resolve_dispute'). No exclusions or prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_agentAInspect

Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-local state — no configId/signerAddress context needed. Returns: registration confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
entitiesYes
descriptionYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds that registration is server-local and signature-based, and mentions a return value. It does not detail edge cases (e.g., overwriting existing registration) or side effects, but provides modest 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences: first states purpose, second adds context and return info. No redundant or ambiguous phrasing. Front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks explanation of prerequisites, failure modes, or integration with other tools. Given no output schema and sparse annotations, the description is moderately complete but misses important usage context for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (only signerAddress has a description). The description loosely refers to 'Ethereum identities and roles' without detailing parameters like name, description, entities, or nested fields. It adds minimal meaning beyond the schema's type definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Registers a dACP agent'), the resource ('with this MCP server instance'), and the associations ('Ethereum identities and roles'). It distinguishes this tool from siblings which focus on exchanges, disputes, offers, etc., as 'register' is a unique operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (independent registration before other operations) via 'Server-local state — no configId/signerAddress context needed.' However, it does not explicitly state when to use vs. alternatives, nor does it mention when not to use or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_contractual_agreementA
Read-only
Inspect

Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agreement string.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
templateYes
offerDataYes
offerMetadataYes
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description adds that it returns a string. It does not disclose error conditions or performance characteristics, but read-only nature is covered. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the primary action. Every sentence adds value: what it does, when to use, and what it returns. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters with nested objects and no output schema, the description should elaborate on the return format (e.g., plain text vs HTML) and parameter specifics. It says 'text/HTML' but lacks detail. Adequate for basic understanding but incomplete for robust selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40%, and the description does not explain any parameters in detail. Parameters like 'template' and 'signerAddress' are left unclear, requiring the agent to infer from names. The description adds no semantic value beyond the schema's sparse descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it renders the legal contractual agreement text/HTML for an offer, with specific inputs (offer data and metadata) and output (rendered agreement string). This distinguishes it from sibling transaction tools like 'commit_to_offer' which execute blockchain actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use to preview or store the agreement', which implies appropriate use cases but does not explicitly state when not to use or provide alternatives. The sibling list shows it's a rendering tool, but no comparative guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_disputeA
Destructive
Inspect

Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with their wallet (EIP-712), (3) either party submits sigR/sigS/sigV here. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
sigRYes32-byte R component of the ECDSA resolution signature as 0x-prefixed hex. From the locally-signed EIP-712 signature parameters.
sigSYes32-byte S component as 0x-prefixed hex. From the locally-signed EIP-712 signature parameters.
sigVYesRecovery byte V: 27 or 28. From the locally-signed EIP-712 signature parameters.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
buyerPercentBasisPointsYesAgreed buyer share in basis points (0–10000). Both parties must sign the same value. Obtain via create_dispute_resolution_proposal then sign the typed data locally with each party's wallet (EIP-712).

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true. Description adds workflow context (local signing, return of unsigned tx data) and clarifies that no direct on-chain action occurs, complementing annotations well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: purpose followed by numbered workflow steps. Concise, front-loaded, no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Handles 8 parameters (7 required) well by linking to sibling tools and explaining return value ('unsigned transaction data'). No output schema needed; description covers integration flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions. The description adds value by explaining the origin of sigR/sigS/sigV from local EIP-712 signing, which aids understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Resolves a dispute by mutual agreement.' and outlines the multi-step workflow, distinguishing it from siblings like decide_dispute or escalate_dispute.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use: after both parties sign typed data locally, and that either party submits signatures. References create_dispute_resolution_proposal as prerequisite, providing clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retract_disputeA
Destructive
Inspect

Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint=true), the description adds that it releases seller deposit, restores completion flow, returns unsigned transaction data, and requires caller to be the buyer. This provides meaningful behavioral insight not present in annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action. No redundant or extraneous text. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the purpose and high-level effect. With strong schema coverage and annotation hints, the agent has enough context to invoke the tool. Could be improved by mentioning that the returned unsigned transaction must be signed and sent via send_signed_transaction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so the schema already documents all parameters well. The description adds no additional parameter meaning 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (retracts a raised dispute), the effect (releasing seller deposit, restoring completion flow), and the caller constraint (buyer who raised it). This effectively distinguishes it from sibling tools like raise_dispute, escalate_dispute, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on who should use it (buyer who raised the dispute) and what it accomplishes. However, it does not explicitly contrast with alternative dispute resolution tools (e.g., resolve_dispute or decide_dispute), which would strengthen guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_voucherA
Destructive
Inspect

Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
exchangeIdYesNumeric ID of the exchange/dispute to act on. Obtain from get_exchanges or the response of commit_to_offer.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the destructive nature (funds are returned, voucher revoked) and returns unsigned transaction data, which goes beyond the annotations (destructiveHint: true). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and effect. Every sentence provides essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description mentions 'Returns unsigned transaction data' but does not explain what steps follow (e.g., signing and sending via send_signed_transaction). Given no output schema, more context on the next action would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The tool description does not add any extra parameter semantics beyond the schema, so score is at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Revokes'), the resource ('committed voucher'), and the effect ('returning funds to the buyer'). It also specifies the caller role ('seller assistant'). This is specific enough to distinguish from sibling tools like cancel_voucher, though not explicitly differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a prerequisite ('Caller must be the seller assistant') but does not specify when to use this tool versus alternatives like cancel_voucher or redeem_voucher. No exclusions or contextual when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_productsA
Read-only
Inspect

Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and an includeInvalidOffers flag (default false = only products with currently-valid offers). Read-only. Returns: array of product search result fragments.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
keywordsYesList of keywords matched against product title, description, brand, category, and tags.
productsSkipNo
productsFirstNo
productsFilterNo
productsOrderByNo
includeInvalidOffersNoWhen true, include products whose offers are outside their validity window. Defaults to false (valid offers only).
productsOrderDirectionNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations: it specifies the default for includeInvalidOffers (false, meaning only valid offers), and confirms the tool is read-only (consistent with readOnlyHint annotation). No contradictions; the description enriches the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main purpose, and lists key features concisely. Every sentence adds value without redundancy. It is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite clear purpose and features, the description does not explain the return structure beyond 'array of product search result fragments.' With 8 parameters, no output schema, and nested objects, the description should elaborate on the output fields and any error behavior. This gap makes the tool less transparent for automated invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 38%, the description partially compensates by mentioning 'Supports pagination, ordering, filtering' for parameters like productsSkip, productsFirst, productsOrderBy, and productsOrderDirection. However, it does not explain the meaning of nested objects (productsFilter) or the full list of ordering fields. The includeInvalidOffers parameter is well-described, but overall the description adds only moderate value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags,' specifying the verb, resource, and search fields. It also distinguishes from sibling tools like get_all_products_with_not_voided_variants by being a keyword search with pagination and filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it is a read-only search tool supporting pagination, ordering, filtering, and an includeInvalidOffers flag. However, it does not explicitly state when not to use this tool or compare it with alternatives like get_all_products_with_not_voided_variants, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_forwarded_meta_transactionB
Destructive
Inspect

Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
signatureYes
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
contractAddressYesValid Ethereum address (e.g. '0xAbCd...' or '0xabcd...'). Mixed-case addresses are checksum-validated; all-lowercase and all-uppercase addresses are also accepted.
domainSeparatorYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, so the description does not need to restate that. It adds context about Biconomy and ERC-20 payment, but does not disclose potential side effects like gas costs, transaction status, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences that convey the core functionality and return value without unnecessary words. Excellent front-loading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (6 required parameters, nested object, no output schema, many siblings), the description is insufficient. It does not explain the return value structure, error handling, or how this fits into the broader transaction workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%; description adds that 'request' is an ERC20ForwardRequest and 'domainSeparator' is a signature. However, it does not explain the nested fields within 'request' or the exact format of 'signature' and 'domainSeparator', leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Relays' and the resource 'Biconomy forwarded meta-transaction (ERC-20 gas payment)'. However, it does not distinguish this from sibling tools like 'send_meta_transaction' or 'send_native_meta_transaction', which are also transaction relay tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions prerequisites ('Requires a complete ERC20ForwardRequest and domain separator signature') but provides no guidance on when to use this tool vs. alternatives, or when not to use it. Given the large sibling set with similar transaction tools, this is a gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_meta_transactionA
Destructive
Inspect

Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target operation requires metaTx relay. Optionally accepts transferAuthorizations (from the sign_receive_with_* tools, completed with your local signature) so the protocol can pull ERC-20 tokens without a prior approve_exchange_token tx. Returns: relay transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
sigRYes
sigSYes
sigVYes
nonceYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
functionNameYes
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
functionSignatureYes
transferAuthorizationsNoOptional ERC-20 transfer authorizations that let the protocol pull tokens without a prior approve_exchange_token tx (e.g. commit_to_offer or deposit_funds in metaTx mode). Build each entry with the matching sign_receive_with_* tool: sign its `typedData` locally and add the resulting `signature` to its `transferAuthorization` object.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, and the description adds real context: no gas cost to the user, the EIP-712 sigR/sigS/sigV requirement, and the token-pull mechanism. It does not state that the relay is broadcast irreversibly on-chain or what happens if the nonce/signature is stale, which for a destructive write tool would be worth adding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five tight sentences, front-loaded with the core action and gasless benefit, then signature requirements, use condition, optional authorizations, and the return value. Dense but no sentence is filler; the nested-signing detail is the only slightly heavy part.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-param, 8-required write tool with no output schema, the description covers the purpose, prerequisite signing flow, optional token-pull flow, and states the return value. The main gap is the absence of a routing rule against the two sibling meta-transaction tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (33%), so the description must compensate, and it does for the critical cryptography params: it explains that sigR/sigS/sigV come from a locally-signed EIP-712 payload and that transferAuthorizations are built via sign_receive_with_* tools. functionName, functionSignature, and nonce remain undocumented, but the hardest params are covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Relays a pre-signed meta-transaction via Biconomy' with the gasless rationale. It is clear what the tool does, but it does not distinguish itself from the sibling relay tools send_forwarded_meta_transaction and send_native_meta_transaction, which an agent must choose among.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when the target operation requires metaTx relay' gives a condition, and it explains the transferAuthorizations alternative to approve_exchange_token. However it offers no guidance on when to pick this relay over send_forwarded_meta_transaction or send_native_meta_transaction, leaving the most likely sibling confusion unresolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_native_meta_transactionA
Destructive
Inspect

Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed EIP-712 payload. Returns: relay transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
sigRYes
sigSYes
sigVYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
contractAddressYesValid Ethereum address (e.g. '0xAbCd...' or '0xabcd...'). Mixed-case addresses are checksum-validated; all-lowercase and all-uppercase addresses are also accepted.
functionSignatureYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already set `destructiveHint: true`, so the description adds context about using Biconomy and returning relay transaction data. This goes beyond the annotations, but does not disclose additional behavioral traits such as rate limits or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the core action and requirements, with no wasted words. Every sentence adds value—describing the mechanism and return type.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 required params, no output schema), the description covers the main action, prerequisites, and return type. It lacks details on what the relay transaction data contains, but is sufficient for an agent familiar with meta-transactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers only 43% of parameters with descriptions. The description compensates by explaining that `functionSignature`, `sigR`, `sigS`, and `sigV` come from a locally-signed EIP-712 payload, adding meaning beyond the schema patterns and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Relays a native meta-transaction (EIP-712 signed function call) via Biconomy.' It uses a specific verb (relays) and resource (native meta-transaction), and distinguishes from sibling tools like `send_meta_transaction` by specifying 'native' and 'via Biconomy'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by requiring 'ABI-encoded function signature and sigR/sigS/sigV from a locally-signed EIP-712 payload,' but does not explicitly state when to use this tool vs alternatives like `send_meta_transaction` or `send_signed_transaction`. No exclusions or when-not guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_signed_transactionA
Destructive
Inspect

Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethers wallet.signTransaction(tx)). Returns: transaction hash, block number, and gas used.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
signedTransactionYesRLP-encoded signed Ethereum transaction as 0x-prefixed hex string. Obtain from local wallet signing (e.g. ethers `wallet.signTransaction(tx)`).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true, and the description confirms a write operation ('Broadcasts'). It adds value by specifying the return fields (transaction hash, block number, gas used) and the required signing method. It does not mention cost or failure modes, but the annotation covers the essential behavioral trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences: the first states purpose and required input format, the second states return values. Every sentence is necessary, and the structure is front-loaded, allowing quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With two required params and no output schema, the description covers the return values and input format thoroughly. It lacks details on error handling or gas implications, but given the destructive annotation and typical Ethereum transaction semantics, it is sufficiently complete for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds extra context beyond the schema by explaining the signedTransaction format with an example (ethers wallet.signTransaction(tx)) and detailing the configId format. This enhances understanding for an agent selecting the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Broadcasts' and the resource 'signed raw Ethereum transaction'. It distinguishes from sibling tools like send_meta_transaction by specifying that the transaction must come from local wallet signing, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear guidance on when to use this tool: 'signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing'. It also mentions the configId parameter format. However, it does not explicitly exclude scenarios (e.g., when using meta-transactions) or provide alternatives, which would improve guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sign_full_offerA
Read-only
Inspect

Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Returns: typed data structure — sign it locally with your wallet (EIP-712), then use the signature in the next step.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesOffer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH.
agentIdNoOptional dACP agent facilitating this offer. Omit or pass '0' if no agent.
buyerIdYesNumeric ID of the buyer entity. Use '0' for seller-initiated offers.
creatorNo'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
feeLimitNoMax protocol fee the seller accepts in same token unit. Pass as string.
sellerIdYesNumeric ID of the seller entity. Obtain via get_sellers_by_address.
committerYesEthereum address of the buyer committing in the same transaction.
conditionNo
priceTypeNo0 = static price, 1 = discovery price (auction).
metadataUriYesIPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata.
royaltyInfoNo
metadataHashYesKeccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools.
offerCreatorYesEthereum address of the seller creating this non-listed offer. Must match the seller's assistant address.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
sellerDepositYesSeller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
collectionIndexNoIndex of the seller's NFT collection for vouchers. Omit to use default (index 0).
disputeResolverIdNoID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers.
quantityAvailableYesHow many times this offer can be committed to. Must be 1 when creator='BUYER'.
useDepositedFundsNoIf true, use funds already deposited in the protocol treasury instead of transferring from the wallet.
validFromDateInMSYesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
conditionalTokenIdNoOptional token ID of the NFT gate token used by this specific commit (for SpecificToken gating type).
validUntilDateInMSYesUnix timestamp in milliseconds when the offer can no longer be committed to.
drMutualizerAddressNoOptional dispute resolver mutualizer contract address that pools resolution funds.
exchangeTokenAddressNoERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values.
buyerCancellationPenaltyYesAmount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string.
voucherValidDurationInMSYesVoucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead.
disputePeriodDurationInMSYesDuration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days.
resolutionPeriodDurationInMSYesDuration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days.
voucherRedeemableFromDateInMSYesTimestamp in ms from which buyer can redeem. Must be >= validFromDateInMS.
voucherRedeemableUntilDateInMSYesTimestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains that this tool generates data to be signed offline, consistent with the readOnlyHint annotation. It adds context about the return value and next steps, which helps the agent understand it is a preparatory read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The essential information is front-loaded: what the tool does, when to use it, and what to do with the output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (32 parameters, nested objects, no output schema), the description provides adequate workflow context and tells the agent what to do after invoking. It could mention the return format more precisely, but it suffices for a preparatory tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (94%), so the baseline is 3. The description does not elaborate on individual parameters beyond what the schema already covers. It adds minimal value for parameter semantics, but the schema is comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (generates) and resource (EIP-712 typed data for a non-listed offer), and distinguishes from siblings by specifying it should be called before create_offer_and_commit or void_non_listed_offer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call this tool relative to other tools ('Call before create_offer_and_commit or void_non_listed_offer') and describes the workflow (generate, sign locally, use signature). No exclusions or alternatives are mentioned, 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.

sign_receive_with_dai_permitA
Read-only
Inspect

Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until expiry. Sign locally with your wallet (EIP-712); add the resulting signature to the returned transferAuthorization { strategy: 'DAIPermit', data } and pass it in send_meta_transaction.transferAuthorizations. Returns: typedData to sign + transferAuthorization template.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesAmount in wei the spender is authorized to pull from the signer.
expiryYesUnix timestamp in seconds after which the DAI-style permit is no longer valid.
spenderNoOptional spender address. Defaults to the Boson Protocol diamond from SDK config.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
tokenDomainNameYesEIP-712 domain name of the DAI-style token (e.g. 'Dai Stablecoin').
exchangeTokenAddressYesERC-20 token contract address that supports the permit/authorization standard.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true annotation correctly reflects a local typed-data generator, and the description adds real context beyond it: the default spender (protocol diamond), the expiry-bounded authorization scope, and the exact shape of the returned transferAuthorization template. It does not cover failure modes or token-support limits, keeping it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences that front-load the core action before the usage workflow and return description. Every sentence carries task-relevant information, though the embedded field paths make some clauses heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by naming what is returned (typedData plus a transferAuthorization template) and how it must be signed and forwarded. Combined with fully-covered params, an agent has enough to invoke it correctly; only the choice among sibling permit standards is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all seven parameters, making 3 the baseline. The description adds only marginal detail, clarifying the spender default and the expiry cutoff ('until `expiry`'), while value, configId, signerAddress, tokenDomainName and exchangeTokenAddress are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Generates EIP-712 typed data for a DAI-style Permit.' An agent can tell what the tool produces. However, it does not explicitly differentiate itself from the closely-named siblings sign_receive_with_erc2612_permit, sign_receive_with_erc3009_authorization, and sign_receive_with_permit2, so channel selection still requires inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear end-to-end workflow: sign the returned typed data locally, then embed the signature into transferAuthorization and pass it via send_meta_transaction.transferAuthorizations. This tells the agent how the output is consumed. It stops short of stating when to prefer this permit standard over the erc2612/erc3009/permit2 siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sign_receive_with_erc2612_permitA
Read-only
Inspect

Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull value from signerAddress until deadline. Sign locally with your wallet (EIP-712); add the resulting signature to the returned transferAuthorization { strategy: 'EIP2612', data } and pass it in send_meta_transaction.transferAuthorizations. Returns: typedData to sign + transferAuthorization template.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesAmount in wei the spender is authorized to pull from the signer.
spenderNoOptional spender address. Defaults to the Boson Protocol diamond from SDK config.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
deadlineYesUnix timestamp in seconds after which the permit is no longer valid.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
tokenDomainNameYesEIP-712 domain name of the token contract (e.g. 'USD Coin'). Required for ERC-3009 / EIP-2612 domain separator.
tokenDomainVersionYesEIP-712 domain version of the token contract (e.g. '2'). Required for ERC-3009 / EIP-2612 domain separator.
exchangeTokenAddressYesERC-20 token contract address that supports the permit/authorization standard.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a tool that only produces typed data and does not sign or submit anything, and the description reinforces this by telling the caller signing happens locally. It adds genuinely useful behavior beyond the annotation: the default spender (protocol diamond), the deadline-based validity, and the shape of the returned transferAuthorization template. It stops short of noting any chain/domain constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with zero filler, front-loaded with the operation and standard, followed by usage and the return shape in priority order. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema, the description compensates by summarizing the return value (typedData plus transferAuthorization template) and the wiring into send_meta_transaction. No output schema exists, so this is adequate; only minor details (domain/chain nuances) are left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description loosely ties value, signerAddress and deadline together and restates the default spender, but that default is already documented in the schema, so it adds little meaning beyond what structured fields already supply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Generates EIP-712 typed data for an EIP-2612 Permit.' The standard is named, which implicitly separates it from the sibling sign_receive_with_permit2/erc3009/dai_permit tools, but it never explicitly contrasts them, so an agent must infer the distinction from the protocol name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete usage context: sign locally with the wallet, then attach the resulting signature to send_meta_transaction.transferAuthorizations. It names the downstream tool and the field to populate, which is strong routing. It does not state when NOT to use this versus the other permit variants, 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.

sign_receive_with_erc3009_authorizationA
Read-only
Inspect

Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull value from signerAddress between validAfter and validBefore. Sign locally with your wallet (EIP-712); add the resulting signature to the returned transferAuthorization { strategy: 'ERC3009', data } and pass it in send_meta_transaction.transferAuthorizations. Returns: typedData to sign + transferAuthorization template.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesAmount in wei the spender is authorized to pull from the signer.
spenderNoOptional spender address. Defaults to the Boson Protocol diamond from SDK config.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
validAfterYesUnix timestamp in seconds before which the authorization is not valid.
validBeforeYesUnix timestamp in seconds after which the authorization is no longer valid.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
tokenDomainNameYesEIP-712 domain name of the token contract (e.g. 'USD Coin'). Required for ERC-3009 / EIP-2612 domain separator.
tokenDomainVersionYesEIP-712 domain version of the token contract (e.g. '2'). Required for ERC-3009 / EIP-2612 domain separator.
exchangeTokenAddressYesERC-20 token contract address that supports the permit/authorization standard.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a tool that only produces typed data and never signs or sends, so there is no contradiction. The description adds real behavioral context beyond the annotation: the default spender is the protocol diamond, signing happens locally, and the return is a typedData payload plus a transferAuthorization template (strategy 'ERC3009').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three densely-packed sentences that are front-loaded with the operation and end with the write/send instructions. Slight redundancy in the trailing 'Returns: typedData to sign + transferAuthorization template' sentence, which echoes earlier content, keeps it from being maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter crypto tool with no output schema, the description supplies the missing return shape and downstream integration path, which covers the main gaps. It could still say more about how it relates to the sibling permit variants, but nothing essential for correct invocation is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates value, signerAddress, validAfter and validBefore, and notes the spender default, but adds little syntax or format detail beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Generates EIP-712 typed data') and a precise resource (ERC-3009 ReceiveWithAuthorization, e.g. USDC). The named standard implicitly separates it from the sibling sign_receive_with_dai_permit, sign_receive_with_erc2612_permit and sign_receive_with_permit2 tools, so an agent can route without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear workflow: sign locally with EIP-712, attach the signature to the returned transferAuthorization, and pass it through send_meta_transaction.transferAuthorizations, explicitly naming the downstream tool. It lacks an explicit statement of when to choose ERC-3009 over the other permit variants, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sign_receive_with_permit2A
Read-only
Inspect

Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull value from signerAddress until deadline. permit2Address defaults to contracts.permit2 from SDK config; permit2Nonce defaults to a random uint256. Sign locally with your wallet (EIP-712); add the resulting signature to the returned transferAuthorization { strategy: 'Permit2', data } and pass it in send_meta_transaction.transferAuthorizations. Returns: typedData to sign + transferAuthorization template.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesAmount in wei the spender is authorized to pull from the signer.
spenderNoOptional spender address. Defaults to the Boson Protocol diamond from SDK config.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
deadlineYesUnix timestamp in seconds after which the Permit2 authorization is no longer valid.
permit2NonceNoOptional Permit2 nonce as a uint256 string. If omitted, a random uint256 is generated.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
permit2AddressNoOptional Uniswap Permit2 contract address. Defaults to contracts.permit2 from SDK config.
exchangeTokenAddressYesERC-20 token contract address that supports the permit/authorization standard.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: default spender (protocol diamond), default permit2Address from SDK config, random permit2Nonce when omitted, and the exact shape of what is returned (typedData + transferAuthorization template). No contradiction with the read-only hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then layers defaults, the signing workflow, and the return value in three dense sentences; every sentence carries useful information. Slightly redundant with the schema's default descriptions, so not perfectly economical, but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by explicitly describing the return (typedData to sign plus a transferAuthorization template) and the downstream step. For an 8-parameter signing helper, this covers what an agent needs to call it and use its result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 8 parameters including the default behaviors. The description largely restates those defaults (spender, permit2Address, permit2Nonce) rather than adding syntax or format meaning beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Generates) and resource (EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom). The mechanism is named precisely, which cleanly distinguishes it from the sibling sign_receive_with_dai_permit / erc2612 / erc3009 variants. An agent can tell which signing path this is without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear procedural context: sign locally with EIP-712, add the signature to the returned transferAuthorization, and pass it in send_meta_transaction.transferAuthorizations. However, it never names the alternative sign_receive_* tools or states the condition (token standard) that selects this one over them, so sibling routing is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_base_metadataAInspect

Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in create_offer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
imageNo
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
conditionNo
imageDataNo
schemaUrlYes
attributesNo
licenseUrlYes
youtubeUrlNo
descriptionYes
externalUrlYes
animationUrlNo
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds that the tool stores to IPFS and returns metadataUri/metadataHash, but does not disclose permissions or side effects beyond what annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two sentences, starting with the verb 'Stores' and immediately clarifying the use case. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 14 parameters and no output schema, the description is too brief. It mentions return format but omits parameter details, prerequisites, or examples, leaving agents underinformed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 14% (configId and signerAddress have descriptions). The description does not explain any of the 14 parameters, failing to add meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Stores a Base metadata object to IPFS' and specifies it is for 'simple offers that don't require ProductV1 or Bundle structure,' effectively distinguishing it from sibling tools like store_product_v1_metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use for simple offers that don't require ProductV1 or Bundle structure,' providing clear guidance on when to use this tool and implying alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_bundle_item_nft_metadataAInspect

Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to include in the items array.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
imageNo
termsNo
chainIdNo
tokenIdNo
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
contractNo
quantityNo
imageDataNo
schemaUrlYes
attributesNo
image_dataNo
youtubeUrlNo
descriptionNo
externalUrlNo
youtube_urlNo
animationUrlNo
external_urlNo
tokenIdRangeNo
animation_urlNo
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds that the tool stores to IPFS and returns a URL, which is consistent with a write operation. It does not contradict annotations. However, it does not disclose potential costs or latency of IPFS storage, but overall the behavioral transparency is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, front-loading the verb and purpose. No extraneous information. Every sentence is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (22 parameters, nested objects, 5 required) and lack of output schema, the description is insufficient. It omits details about required parameters like signerAddress, chainId, or tokenId, and does not clarify the return value format beyond the example. More guidance is needed for an agent to use this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 9%, so the description should compensate by explaining key parameters. It does not describe any parameters, leaving the semantics of 22 parameters largely unexplained. This significantly hinders correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('stores... metadata to IPFS'), the resource ('single NFT bundle item'), and distinguishes from siblings by specifying it should be called per NFT component before store_bundle_metadata. This provides high purpose clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: 'Call once per NFT component in a bundle before store_bundle_metadata.' This tells when and in what order to use the tool. However, it does not mention when not to use it or compare with alternatives like store_bundle_item_product_v1_metadata, leaving some gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_bundle_item_product_v1_metadataAInspect

Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to include in the items array.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
uuidYes
productYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
shippingYes
schemaUrlYes
variationsNo
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
exchangePolicyYes
productOverridesNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the IPFS storage action and return format, adding context beyond annotations that only indicate readOnlyHint=false and destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence for purpose plus one line for return format, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (nested objects, IPFS, many sibling tools), the description is too brief. Missing parameter explanations and workflow context, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides no information about the 10 parameters (8 required) despite low schema coverage (20%). Agents must rely solely on schema, which lacks descriptions for most fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Stores a single ProductV1 bundle item's metadata to IPFS') and the resource, distinguishing it from sibling tools like store_bundle_metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to call once per physical product before store_bundle_metadata, providing clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_bundle_metadataAInspect

Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their returned URLs in the items array. Returns: { metadataUri, metadataHash }.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
imageNo
itemsYes
sellerYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
conditionNo
imageDataNo
schemaUrlYes
attributesNo
bundleUuidYes
licenseUrlYes
youtubeUrlNo
descriptionYes
externalUrlYes
animationUrlNo
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false; the description confirms it's a write operation to IPFS. It adds the prerequisite chain context but does not detail other side effects or permissions needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main action, prerequisite, and return format. Efficient but could be slightly more structured with explicit parameter guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 17 parameters, nested objects, no output schema, and low coverage, the description leaves many gaps. The agent lacks information about most parameters and the overall metadata structure. Incomplete for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 12%, with 15 out of 17 parameters lacking descriptions. The description only mentions the 'items' array briefly. It does not explain critical parameters like schemaUrl, bundleUuid, or nested seller object fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Stores a Bundle metadata object to IPFS' with a specific verb and resource. It distinguishes from siblings like store_bundle_item_product_v1_metadata by noting them as prerequisites.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides a prerequisite (calling store_bundle_item_* first) and explains how their returned URLs are used in the items array. Also states what it returns ({ metadataUri, metadataHash }).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_product_v1_metadataAInspect

Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0x...' }.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
uuidYes
imageYes
sellerYes
productYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
shippingYes
conditionNo
imageDataNo
schemaUrlYes
attributesYes
licenseUrlYes
variationsNo
youtubeUrlNo
descriptionYes
externalUrlYes
animationUrlNo
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
exchangePolicyYes
productOverridesNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false; the description adds that it stores to IPFS, which is a write but non-destructive operation. No contradiction. The description could mention IPFS-specific details (e.g., immutability, cost), but given annotations, the current level of transparency 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no wasted words. It front-loads the core action ('Stores a ProductV1 metadata object to IPFS') and immediately provides actionable guidance ('Call before create_offer'), earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's complexity (21 parameters, nested objects, no output schema), the description covers the essential purpose and prerequisite. However, it lacks details about input structure validation or return value usage beyond the two fields. For a tool with this many required parameters, more contextual guidance would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 10% (only configId and signerAddress have descriptions). The tool has 21 parameters, many required and nested, but the description does not explain any of them or hint at common patterns. While the return format is mentioned, parameter semantics are left entirely to the schema, which is insufficient for such a complex input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it stores ProductV1 metadata to IPFS, explicitly says it should be called before create_offer to obtain metadataUri and metadataHash, and the resource 'ProductV1 metadata' is specific, distinguishing it from sibling tools like store_base_metadata or store_bundle_item_product_v1_metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear precondition: 'Call before create_offer to get metadataUri and metadataHash.' This tells agents exactly when to use the tool, though it does not explicitly state when not to use it or mention alternatives, which is acceptable given the tool's specific role.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_sellerA
Destructive
Inspect

Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNumeric ID of the existing seller entity to update. Obtain from get_sellers_by_address.
kindYes
nameNo
typeYes
imagesNo
websiteNo
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
authTokenIdYesNFT token ID used as auth token (e.g. Lens profile ID). Pass '0' if not using auth tokens.
descriptionNo
socialLinksNo
contactLinksNo
authTokenTypeYesAuth token type: 0=None, 1=Lens Protocol profile NFT.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
salesChannelsNo
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
legalTradingNameNo
contactPreferenceYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool returns unsigned transaction data (indicating no on-chain execution) and requires signerAddress. Adds value beyond annotations by explaining the returned format and caller role.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff. Information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 17 parameters, 8 required, and no output schema, the description is too brief. It fails to explain update behavior, valid fields, error states, or link to related tools beyond prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 35%, so description should compensate, but it adds minimal parameter information beyond referencing id from get_sellers_by_address. Most parameters lack context in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing seller account (specific verb+resource). It distinguishes from create_seller and provides prerequisite (get_sellers_by_address). No ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes caller must be current seller admin (signerAddress) and instructs to use get_sellers_by_address first. Though not explicitly stating when not to use, the prerequisites are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_metadataA
Read-only
Inspect

Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors early. Read-only. Returns: validation result with any errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
metadataYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description reinforces readOnlyHint annotation and adds context: it validates against specific schemas (PRODUCT_V1, BUNDLE, etc.) and returns a validation result. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three succinct sentences, front-loaded with purpose, no unnecessary words. Every sentence contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one nested parameter and no output schema, the description provides enough context: what schemas are validated, that it's read-only, and that it returns a validation result. Minor gap: could specify that all fields in metadata are validated against the chosen schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description adds meaning by specifying the set of allowed schemas. However, it does not detail the metadata object structure beyond the schema's required 'type' field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it validates metadata against Boson Protocol schemas without storing, distinguishing it from sibling store tools like store_product_v1_metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends using before store_*_metadata to catch errors early, providing clear guidance on when to use. No explicit when-not, but sufficiently directs agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

void_non_listed_offerA
Destructive
Inspect

Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712) to obtain the signature. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesOffer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH.
agentIdNoOptional dACP agent facilitating this offer. Omit or pass '0' if no agent.
buyerIdYesNumeric ID of the buyer entity. Use '0' for seller-initiated offers.
creatorNo'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
feeLimitNoMax protocol fee the seller accepts in same token unit. Pass as string.
sellerIdYesNumeric ID of the seller entity. Obtain via get_sellers_by_address.
conditionNo
priceTypeNo0 = static price, 1 = discovery price (auction).
metadataUriYesIPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata.
royaltyInfoNo
metadataHashYesKeccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
sellerDepositYesSeller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
collectionIndexNoIndex of the seller's NFT collection for vouchers. Omit to use default (index 0).
disputeResolverIdNoID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers.
quantityAvailableYesHow many times this offer can be committed to. Must be 1 when creator='BUYER'.
useDepositedFundsNoIf true, use funds already deposited in the protocol treasury instead of transferring from the wallet.
validFromDateInMSYesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
validUntilDateInMSYesUnix timestamp in milliseconds when the offer can no longer be committed to.
drMutualizerAddressNoOptional dispute resolver mutualizer contract address that pools resolution funds.
exchangeTokenAddressNoERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values.
buyerCancellationPenaltyYesAmount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string.
voucherValidDurationInMSYesVoucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead.
disputePeriodDurationInMSYesDuration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days.
resolutionPeriodDurationInMSYesDuration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days.
voucherRedeemableFromDateInMSYesTimestamp in ms from which buyer can redeem. Must be >= validFromDateInMS.
voucherRedeemableUntilDateInMSYesTimestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true. The description adds that it returns unsigned transaction data and requires a prior signature step. No contradictions. It could disclose more about failure modes or permissions, but the addition 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. First sentence states purpose, second gives prerequisite and return type. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 29 parameters and complex schema, the description is too brief. It does not explain why the input schema includes many fields (e.g., price, sellerId) when the tool voids an offer—this is confusing. No output schema is provided, and the description omits what the unsigned transaction data represents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 93%, so baseline is 3. The description adds no parameter information beyond what schema already provides. No extra value, but no deficit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool voids a private (non-listed) offer before fulfillment, using specific verb and resource. It distinguishes from siblings like 'void_offer' by explicitly noting 'private (non-listed)', and from 'void_non_listed_offer_batch' by implying single offer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it voids an offer before fulfillment and requires a prerequisite (sign_full_offer + local signing). However, it does not explicitly differentiate from the batch version or state when not to use this tool, so it lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

void_non_listed_offer_batchA
Destructive
Inspect

Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
fullOffersYes
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, and the description adds that the operation is atomic and returns unsigned transaction data. However, it does not disclose what voiding entails (e.g., permanent removal, effects on offers), nor does it explain the prerequisites mentioned. The description adds some context beyond annotations but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no unnecessary words. It front-loads the primary action and quickly conveys the key difference from the singular version. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a destructive batch operation with a large nested schema, the description is incomplete. It lacks warnings, explains prerequisites vaguely via reference, and doesn't detail the return value beyond 'unsigned transaction data.' The absence of an output schema heightens the need for such context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 67%, the description minimally adds value by noting the array of full offer objects. The schema itself provides detailed parameter descriptions, but the description does not clarify the overall structure or usage beyond what's in the schema. It is adequate but not compensatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool voids multiple private offers atomically, specifying the verb 'void', resource 'private offers', and batch aspect. It distinguishes from sibling void_non_listed_offer by noting it operates on an array of full offer objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description references 'same prerequisite as void_non_listed_offer,' implying usage context but fails to explicitly state when to use this tool versus alternatives like void_offer for listed offers. While it compares to the singular version, it could provide clearer guidance on when not to use or specific conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

void_offerA
Destructive
Inspect

Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
offerIdYesID of the listed offer to void. Caller must be the seller assistant. Existing exchanges are unaffected.
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint=true), the description discloses that existing exchanges are unaffected and that it returns unsigned transaction data. This adds valuable context for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of three sentences that cover purpose, prerequisite, effect, and output. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, destructive) and no output schema, the description covers the main aspects: what it does, prerequisites, effects, and return value. However, it does not mention reversibility or behavior if offer is already void.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add new information beyond what is already in the schema. 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool voids a listed offer, differentiating it from siblings like void_non_listed_offer. It specifies the action, resource, and scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the prerequisite that the caller must be the seller assistant, but does not compare to alternatives or specify when not to use. It provides context but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

withdraw_fundsA
Destructive
Inspect

Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the entity via signerAddress. Returns unsigned transaction data.

ParametersJSON Schema
NameRequiredDescriptionDefault
listYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
entityIdYesNumeric ID of the seller or buyer entity withdrawing funds.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates that the tool mutates state (destructiveHint true) by withdrawing funds. It also discloses that it returns unsigned transaction data, implying the need for a follow-up signing step. The caller control requirement (signerAddress) is stated. No contradiction with annotations (destructiveHint true is consistent). Could add more on side effects 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences covering action, target, user roles, caller requirement, and return type. Every sentence adds value with no fluff. Front-loaded with the primary verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides a high-level overview of the tool's purpose and return type. Given the complexity (5 parameters, nested list) and no output schema, it adequately explains the key concepts. However, it could mention the existence of a follow-up step (sending the unsigned transaction with send_signed_transaction or send_meta_transaction) for fuller completeness, especially since siblings include these tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 80%, the descriptions already explain most parameters (e.g., list items, configId format, executionMode enum, signerAddress meaning). The tool description adds overall context but does not significantly enhance parameter understanding beyond the schema. Baseline score of 3 is raised by the clear connection between parameters and the withdrawal action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: withdrawing funds from an entity's protocol treasury to the entity's treasury address. It distinguishes between sellers withdrawing proceeds and buyers withdrawing refunds. The verb 'withdraws' and resource 'funds from treasury' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (for sellers to withdraw proceeds, buyers to withdraw refunds) and that the caller must control the entity via signerAddress. However, it does not explicitly mention when not to use it or alternative tools like deposit_funds or get_funds. The context is clear but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedcreate_seller3 fields changed
      • addedInput schema / properties / contractUri / default
        Added value: +""
      • changedInput schema / properties / contractUri / description
        Previous value: -"URI for OpenSea-style storefront metadata. Can be IPFS URI or empty string."New value: +"Optional URI for OpenSea-style storefront metadata (defaults to empty string, meaning none). When set, it is fetched to copy it to The Graph's IPFS node, so it must be an ipfs:// URI, a CID, or an http(s) URL returning JSON."
      • changedInput schema / required
        Previous value: -[
        -  "type",
        -  "kind",
        -  "contactPreference",
        -  "contractUri",
        -  "royaltyPercentage",
        -  "authTokenId",
        -  "authTokenType",
        -  "configId",
        -  "signerAddress"
        -]New value: +[
        +  "type",
        +  "kind",
        +  "contactPreference",
        +  "royaltyPercentage",
        +  "authTokenId",
        +  "authTokenType",
        +  "configId",
        +  "signerAddress"
        +]
    • Changeddeposit_funds1 field changed
      • changedInput schema / properties / amount / description
        Previous value: -"Amount in wei. For ERC-20, approve_exchange_token must be called first. Pass as string."New value: +"Amount in wei. For ERC-20, approve_exchange_token must be called first, unless relaying in metaTx mode with transferAuthorizations passed to send_meta_transaction. Pass as string."
    • Changedsend_meta_transaction1 field changed
      • addedInput schema / properties / transferAuthorizations
        Added value: +{
        +  "description": "Optional ERC-20 transfer authorizations that let the protocol pull tokens without a prior approve_exchange_token tx (e.g. commit_to_offer or deposit_funds in metaTx mode). Build each entry with the matching sign_receive_with_* tool: sign its `typedData` locally and add the resulting `signature` to its `transferAuthorization` object.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "data": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "nonce": {
        +                "pattern": "^0x[a-fA-F0-9]{64}$",
        +                "type": "string"
        +              },
        +              "validAfter": {
        +                "anyOf": [
        +                  {
        +                    "pattern": "^(\\d+|0x[a-fA-F0-9]+)$",
        +                    "type": "string"
        +                  },
        +                  {
        +                    "maximum": 9007199254740991,
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  }
        +                ]
        +              },
        +              "validBefore": {
        +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
        +              }
        +            },
        +            "required": [
        +              "validAfter",
        +              "validBefore",
        +              "nonce"
        +            ],
        +            "type": "object"
        +          },
        +          "r": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/nonce",
        +            "description": "Optional r component. Derived from `signature` if omitted."
        +          },
        +          "s": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/nonce",
        +            "description": "Optional s component. Derived from `signature` if omitted."
        +          },
        +          "signature": {
        +            "description": "Signature of the typed data returned by the matching sign_receive_with_* tool, signed locally with your wallet (EIP-712).",
        +            "pattern": "^0x[a-fA-F0-9]+$",
        +            "type": "string"
        +          },
        +          "strategy": {
        +            "const": "ERC3009",
        +            "type": "string"
        +          },
        +          "v": {
        +            "anyOf": [
        +              {
        +                "pattern": "^\\d+$",
        +                "type": "string"
        +              },
        +              {
        +                "type": "integer"
        +              }
        +            ],
        +            "description": "Optional v component (27/28, or 0/1). Derived from `signature` if omitted. Provide r, s and v together or not at all."
        +          }
        +        },
        +        "required": [
        +          "strategy",
        +          "data",
        +          "signature"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "data": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "deadline": {
        +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
        +              }
        +            },
        +            "required": [
        +              "deadline"
        +            ],
        +            "type": "object"
        +          },
        +          "r": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/r"
        +          },
        +          "s": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/s"
        +          },
        +          "signature": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/signature"
        +          },
        +          "strategy": {
        +            "const": "EIP2612",
        +            "type": "string"
        +          },
        +          "v": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/v"
        +          }
        +        },
        +        "required": [
        +          "strategy",
        +          "data",
        +          "signature"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "data": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "deadline": {
        +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
        +              },
        +              "nonce": {
        +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
        +              }
        +            },
        +            "required": [
        +              "nonce",
        +              "deadline"
        +            ],
        +            "type": "object"
        +          },
        +          "r": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/r"
        +          },
        +          "s": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/s"
        +          },
        +          "signature": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/signature"
        +          },
        +          "strategy": {
        +            "const": "Permit2",
        +            "type": "string"
        +          },
        +          "v": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/v"
        +          }
        +        },
        +        "required": [
        +          "strategy",
        +          "data",
        +          "signature"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "data": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "expiry": {
        +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
        +              },
        +              "nonce": {
        +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
        +              }
        +            },
        +            "required": [
        +              "nonce",
        +              "expiry"
        +            ],
        +            "type": "object"
        +          },
        +          "r": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/r"
        +          },
        +          "s": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/s"
        +          },
        +          "signature": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/signature"
        +          },
        +          "strategy": {
        +            "const": "DAIPermit",
        +            "type": "string"
        +          },
        +          "v": {
        +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/v"
        +          }
        +        },
        +        "required": [
        +          "strategy",
        +          "data",
        +          "signature"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
  2. 63 tool updates
    • First observedapprove_exchange_token
    • First observedcancel_voucher
    • First observedcommit_to_buyer_offer
    • First observedcommit_to_conditional_offer
    • First observedcommit_to_conditional_offer_and_redeem_voucher
    • First observedcommit_to_offer
    • First observedcommit_to_offer_and_redeem_voucher
    • First observedcomplete_exchange
    • First observedcreate_buyer
    • First observedcreate_dispute_resolution_proposal
    • First observedcreate_offer
    • First observedcreate_offer_and_commit
    • First observedcreate_offer_commit_and_redeem
    • First observedcreate_offer_with_condition
    • First observedcreate_seller
    • First observeddecide_dispute
    • First observeddeposit_funds
    • First observedescalate_dispute
    • First observedexpire_dispute
    • First observedexpire_dispute_batch
    • First observedexpire_escalated_dispute
    • First observedextend_dispute_timeout
    • First observedget_all_products_with_not_voided_variants
    • First observedget_config_ids
    • First observedget_dispute_by_id
    • First observedget_dispute_resolvers
    • First observedget_disputes
    • First observedget_exchanges
    • First observedget_funds
    • First observedget_offers
    • First observedget_registered_agents
    • First observedget_sellers
    • First observedget_sellers_by_address
    • First observedget_supported_tokens
    • First observedraise_dispute
    • First observedredeem_voucher
    • First observedrefuse_escalated_dispute
    • First observedregister_agent
    • First observedrender_contractual_agreement
    • First observedresolve_dispute
    • First observedretract_dispute
    • First observedrevoke_voucher
    • First observedsearch_products
    • First observedsend_forwarded_meta_transaction
    • First observedsend_meta_transaction
    • First observedsend_native_meta_transaction
    • First observedsend_signed_transaction
    • First observedsign_full_offer
    • First observedsign_receive_with_dai_permit
    • First observedsign_receive_with_erc2612_permit
    • First observedsign_receive_with_erc3009_authorization
    • First observedsign_receive_with_permit2
    • First observedstore_base_metadata
    • First observedstore_bundle_item_nft_metadata
    • First observedstore_bundle_item_product_v1_metadata
    • First observedstore_bundle_metadata
    • First observedstore_product_v1_metadata
    • First observedupdate_seller
    • First observedvalidate_metadata
    • First observedvoid_non_listed_offer
    • First observedvoid_non_listed_offer_batch
    • First observedvoid_offer
    • First observedwithdraw_funds

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server for agentic commerce, enabling AI agents to discover services, make x402 payments with USDC across multiple chains, and manage crypto wallets and token swaps.
    441 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Taskmarket that enables AI agents to discover, claim, submit, and track on-chain bounty tasks on the Base-based decentralized task marketplace, including wallet operations, pitch systems, and submission management.
    67 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Pact, an escrow protocol for agent-to-agent commerce, enabling agents to create pacts, fund escrow, deliver work, and settle with an LLM evaluator as dispute backstop.
    9 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources