Skip to main content
Glama

arcgate

Server Details

Token search, swap quotes and ready-to-sign swap transactions on Arc, paid per call via x402

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
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation4/5

Most tools map to clearly distinct lifecycle steps: health check, venue listing, token search, quote, swap, permit completion, and receipt verification. The main possible confusion is between tradeSwap and tradeSwapTx, which are tightly coupled sequential tools, though descriptions clearly separate paid first-round from free permit second-round behavior.

Naming Consistency4/5

All names use lowerCamelCase consistently, and six of seven share a predictable 'trade' prefix for domain operations. The standalone 'health' is a minor but sensible deviation for a system diagnostic tool.

Tool Count5/5

Seven tools is well-scoped for a swap/trading service, covering health, venues, search, quote, swap, permit completion, and receipt verification. No tool feels redundant or unnecessary for the apparent purpose.

Completeness5/5

The set covers the full trade lifecycle from discovery and venue selection through quoting, unsigned transaction generation, Permit2 completion, and post-trade receipt confirmation. Readiness, approvals, and cost/health checks are handled inside the relevant tools, leaving no obvious dead ends.

Available Tools

7 tools
healthAInspect

Reports whether the service is up, with its diagnostics.

  • Cost: free, never x402-gated.

  • Returns: DB import health, rule set version, the deployed commit, cache/RPC/spend counters and the payer-identity mode.

  • Next: call before search/quote/swap to check the service is up.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it declares the cost model (free, never x402-gated) and enumerates what the diagnostics include (DB import health, rule set version, commit, counters, payer-identity mode). It stops short of describing failure/error behavior when the service is down, which is the one remaining transparency gap.

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?

Front-loaded one-line purpose followed by tightly scoped Cost/Returns/Next bullets. Every line earns its place with 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?

For a no-param, no-output-schema probe, the description covers the return contents and the recommended call timing, which is everything an agent needs to invoke it 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?

Zero parameters, so the baseline is 4. There is nothing for the description to clarify beyond what the empty schema already conveys.

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+resource: reports whether the service is up and returns its diagnostics. Clearly distinguishable from the trade* siblings, which are all action-oriented trading tools.

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 when to call it ('call before search/quote/swap to check the service is up'), giving the agent a concrete pre-flight trigger. No exclusions needed for a health probe.

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

tradeQuoteInspect

Prices a swap between sell and buy across the indexed venues and stores it under a quoteId.

  • Cost: 0.01 USDC per call over x402: the first call gets a 402 with payment requirements in the PAYMENT-REQUIRED header (base64 JSON); sign them and retry with a PAYMENT-SIGNATURE header carrying the payment payload.

  • sell / buy: two different assets (native and ERC-20 USDC count as the same asset; either side may be USDC). Resolve a ticker with POST /trade/v1/search first.

  • Response shape: when one side is USDC, best.type is direct/two_hop/split and best.legs lists one leg per path actually used; routes[] lists every discovery candidate. When neither side is USDC, or when a USDC-side allocation can't be expressed as legs, best.type is graph, best.legs is empty, and the execution plan is in best.graph. Both shapes support side: exactIn and exactOut, and both execute the same way through POST /trade/v1/swap.

  • amount: a human-readable decimal string in the token's own units, e.g. "1.5" for 1.5 USDC, not base units. It is the sell amount for side: exactIn and the buy amount for side: exactOut.

  • Optional: side (exactIn/exactOut), slippageBps, split and hop limits, venues/excludeVenues (ids from GET /trade/v1/venues), taker, ttlSec.

  • Executability: POST /trade/v1/swap executes every quote through ArcgateRouter. best.executable is false, with warning graph_execution_unavailable, when no ArcgateRouter is configured (or, for an Aerodrome edge, no Aerodrome router), or when the operator has disabled a selected path's venue - even with both routers configured. In that last case, POST /trade/v1/swap may still fall back to an executable candidate the quote already priced instead of failing outright.

  • Readiness: name the wallet that will trade in taker and the answer carries readiness, read at the quote's block: whether that wallet holds the input (balance), which approval or Permit2 signature POST /trade/v1/swap will need (approval for the default permit2, approve for approval: "approve"), enough native USDC for gas (gas), and whether this call's x402 payer can pay the swap fee (fees). totalCostUsdc is the swap fee plus gas: what finishing costs. When ready is false, next is stop. Without taker there is no readiness.

  • Lifetime: the quoteId is good for ttlSec seconds (default and max 120).

  • Next: POST /trade/v1/swap with the returned quoteId. Costs 10000 base units (0.01 USDC) per call. Payment goes in params._meta["x402/payment"]; use an x402-aware MCP client (see https://docs.arcgate.dev/#arcgate/description/mcp-for-agents).

ParametersJSON Schema
NameRequiredDescriptionDefault
buyYes
sellYes
sideNoexactIn
takerNo
amountYes
ttlSecNoHow long the stored quote (and this response's expiresAt) stays live, in seconds (1-120, default 120). A caller may shorten it to re-quote sooner; it can never lengthen past 120s. Safe to shorten or leave at default: POST /trade/v1/swap always re-quotes and re-simulates at the current block and 409s quote_stale below the stored minAmountOut, so this bounds staleness risk, not price risk. The on-chain execution deadline is a separate parameter (deadlineSec, POST /trade/v1/swap).
venuesNo
maxHopsNo
sourcesNo
maxSplitsNo
allowSplitsNo
slippageBpsNo
excludeVenuesNo
tradeReceiptAInspect

Tells you whether the transactions POST /trade/v1/swap returned did what the quote promised, once you've sent them. It only reads the chain.

  • Cost: free, never x402-gated.

  • Key inputs: quoteId (the one you called POST /trade/v1/swap with) and txHashes, the 1 to 4 transactions you sent for it: the swap, and any approvals. It answers for a quote /trade/v1/swap handed transactions for in the last hour, else 404 swap_not_found, and only for that quote's transactions, sent from its taker: an approval to the input token, or a swap to ArcgateRouter whose deadline one of the quote's /trade/v1/swap or /trade/v1/swap/tx answers issued and whose output goes to its recipient, else 400 invalid_request.

  • Smart-contract wallets: a Safe, an ERC-4337 account or a batching EIP-7702 wallet sends its transaction from an executor or bundler, or to itself, not from the taker to ArcgateRouter, so this answers 400 invalid_request for it. Check that transaction's own receipt and your wallet's success event instead.

  • Returns: result, from the swap transactions. One that filled decides it: pass when delivered is at least minAmountOut, else fail (a round 1 that reverted doesn't undo a round 2 that filled). With none filled: pending while one is not mined yet, else fail: it reverted or was never mined by 60s after its deadline (status expired, or not_found when the chain never saw it). Approvals are listed but don't change the result. delivered is what recipient received of token (the output), read from the swap transaction's Transfer logs, in base units. Also block, each transaction's status, and reason, one sentence on a fail or pending. The first result from a mined swap is final: asking again returns it.

  • Limits: one chain read per quote every 5s (the same txHashes inside that get the last answer; other hashes get 429 receipt_rate_limited with retryAfterSec), and at most 132 per quote (then 429 receipt_reads_exhausted, for good).

  • Next: pass: tell the user what they bought (delivered of token). fail: follow next: requote when no swap transaction succeeded (nothing filled; quote again), stop when one did (tell them reason, and don't trade again). pending: ask again in a few seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteIdYes
txHashesYes

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: cost model (free, never x402-gated), error codes and their triggers (404 swap_not_found, 400 invalid_request), rate limits (one read per quote every 5s, 132 per quote then permanent 429), and finality semantics ('the first result from a mined swap is final'). This is far beyond anything a schema or annotation would convey.

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?

Bold headers (Cost, Key inputs, Returns, Limits, Next) front-load the critical routing info, and most sentences are information-dense. It is long and occasionally dense enough that a few clauses could be tightened, but the detail is largely warranted for the tool's complexity.

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?

For a 2-param tool with no annotations, no output schema, and no param descriptions, the description supplies everything needed: return-value semantics (pass/fail/pending, delivered, block, status, reason), failure reasons, rate limits, and post-result actions. Nothing an agent needs to call or interpret it correctly appears missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate, and it does: quoteId is identified as the one passed to POST /trade/v1/swap, and txHashes as the 1-to-4 transactions sent (the swap plus any approvals). It also explains the validation scope tied to each parameter, adding real meaning the bare schema cannot.

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?

Starts with a specific verb+resource statement: it tells you whether the transactions that POST /trade/v1/swap returned did what the quote promised, and clarifies 'It only reads the chain.' This cleanly separates it from the mutating siblings (tradeSwap, tradeSwapTx), so an agent can distinguish it 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?

Explicit about when to call it ('once you've sent them'), when it does not apply (smart-contract wallets sending from an executor/bundler instead get 400 invalid_request, with a redirect to checking the transaction's own receipt), and what to do next based on result (requote/stop/pending). Alternatives and exclusions are named, not implied.

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

tradeSearchAInspect

Resolves a ticker, name, prefix or 0x address to candidate ERC-20 tokens on Arc.

  • Cost: 0.005 USDC per call over x402: the first call gets a 402 with payment requirements in the PAYMENT-REQUIRED header (base64 JSON); sign them and retry with a PAYMENT-SIGNATURE header carrying the payment payload.

  • Key inputs: query (required), limit (1-25, default 10).

  • Returns: each match with its verification status, safety verdicts and USDC/hub pools, most relevant first.

  • Next: pass the chosen result's address as sell or buy to POST /trade/v1/quote. Costs 5000 base units (0.005 USDC) per call. Payment goes in params._meta["x402/payment"]; use an x402-aware MCP client (see https://docs.arcgate.dev/#arcgate/description/mcp-for-agents).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses the x402 payment flow (402 with PAYMENT-REQUIRED header, retry with PAYMENT-SIGNATURE), the exact cost, where payment goes in `params._meta`, and that results are ordered by relevance. It omits error/no-match behavior and rate limits.

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

Conciseness4/5

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

Front-loaded with purpose and structured in labelled bullets (Cost, Key inputs, Returns, Next) that scan well. Slightly overlong: the 0.005 USDC cost is stated twice in different units, adding mild redundancy.

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 and no annotations, so the description must stand alone; it summarizes return contents (verification status, safety verdicts, pools) and the downstream handoff. It leaves out failure modes and whether results are paginated, which is a modest gap.

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 0%, so the description must compensate, and it does: it marks `query` as required, specifies `limit` range 1-25 and default 10, and — most valuably — expands the semantic space of `query` to ticker, name, prefix or 0x address, which the bare string schema does not convey.

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 first sentence gives a precise verb (resolves) and resource (ERC-20 tokens on Arc) plus the accepted input forms (ticker, name, prefix, 0x address). It is clearly distinguishable from tradeQuote/tradeSwap siblings, though it never explicitly says how it differs from other search-like tools.

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 states the enabling context (resolve a token before trading) and the explicit next step: pass the chosen result's `address` as `sell` or `buy` to POST /trade/v1/quote. No when-not-to-use guidance is given, which holds it below a 5.

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

tradeSwapAInspect

Turns a stored quote into unsigned transactions for the taker to sign and send. arcgate never signs, broadcasts or holds funds.

  • Cost: 0.01 USDC under $1,000; 0.05 USDC from $1,000 to $10,000; above that 0.05 USDC plus 0.5 bps of the amount over $10,000, capped at 5 USDC, size-tiered by the quote's USD notional (the USDC side for a USDC pair, or a token-to-token quote's USD valuation; a quote with no valuation prices at tier 1), over x402 (402 with PAYMENT-REQUIRED, retry with PAYMENT-SIGNATURE). Charged once per quote: POST /trade/v1/swap/tx, the Permit2 second round below, is free.

  • Key inputs: quoteId (from POST /trade/v1/quote), taker; optional recipient (defaults to taker), deadlineSec, approval. Never permit - that belongs to POST /trade/v1/swap/tx; sending one here is 400 invalid_request (the strict schema rejects the unknown key).

  • Every quote executes through ArcgateRouter: it is always the Permit2 spender and the ERC-20 approve spender below. When every source pool of the route being executed trades native USDC, the swap is funded by value instead - no approval transaction and no signature at all.

  • Permit2 (default, one or two calls):

    • Returns transactions - an unlimited ERC-20 approve(Permit2, type(uint256).max) first, if the token's ERC-20 allowance to Permit2 is below the amount, then the swap, which carries an empty Permit2 signature and is only directly sendable as-is when a Permit2 allowance to ArcgateRouter already covers the amount, in which case signatures is empty too. Otherwise it also returns signatures: [{ kind: "permit2", typedData }]; sign typedData with the taker's key (EIP-712, e.g. viem's signTypedData).

    • Sign, then call POST /trade/v1/swap/tx with the same quoteId, taker and recipient, and permit: { message: typedData.message, signature }, while the quote is live: free, because this call already paid the swap fee. The first call to it that succeeds uses the round up; a failed one doesn't.

    • Send that response's transactions in order.

  • approval: "approve" (one call): returns at most one ERC-20 approve(ArcgateRouter, amountIn) transaction instead of a permit to sign - an exact amount, never Permit2, never a signature - and only when the taker's current allowance is below it.

  • Freshness: the quote lives for the ttlSec the quote call asked for (default/max 120s); after that quoteId is 410 quote_expired. Every call re-quotes and re-simulates at the current block and returns 409 quote_stale when the fresh re-quote fails or falls below the stored minAmountOut, when the pre-flight simulation reverts on slippage, or when the simulated delivery is below minAmountOut. A 409 or 410 carries a free fresh quote in quote, with next: "requote": the original quote request (same amount, tokens, side, slippageBps and venues, default ttlSec) quoted again through the same pipeline, exactly as POST /trade/v1/quote answers it; when the original named a taker, the fresh quote is for this call's taker, the wallet swapping now. Nothing executes on it: check its price, safety.verdict and readiness, then swap its quoteId. When the fresh quote can't be traded (no_route, insufficient_liquidity, unsupported_venue or buy_reverts, a cannot_sell or illiquid verdict, not executable, or the taker isn't ready) the answer is next: "stop" with no quote, and error.hint says why. One fresh quote per paid quote: a second 409/410 for the same quoteId, a quote that itself came from a 409/410, or a quote expired over 5 minutes ago gets plain requote with no quote, as does one whose re-quote couldn't run or failed on the server's side; then quote again yourself.

  • Fallback: A stored route on a disabled/undeployed venue falls back to the best executable candidate the quote already priced (warning route_not_executable), or 422 not_executable when no such candidate exists, none re-quotes, or no ArcgateRouter is configured at all.

  • Attempts: a quote gets at most 5 failed calls here; the next call on that quoteId is 429 swap_attempts_exhausted (next: "requote"), answered without running the swap pipeline. A failed call is a 409, a 410 (its fresh quote may run), a 422, 500 or 503, or a successful pipeline whose payment settlement or delivery fails. An attempt stays reserved until its 200 is delivered (after settlement when paid); that delivery, a 404, or a 400 (at parse, or a reserved taker/recipient) uses none. A delivered 200 does not reset this quote's previous failures. POST /trade/v1/swap/tx counts its own, per permit round.

  • Next: a 200 with signatures non-empty needs POST /trade/v1/swap/tx before sending anything (next: "sign_permit"); otherwise sign and send transactions in order, then confirm the fill with POST /trade/v1/receipt (free). Costs 0.01 USDC under $1,000; 0.05 USDC from $1,000 to $10,000; above that 0.05 USDC plus 0.5 bps of the amount over $10,000, capped at 5 USDC; the exact amount for your quoteId comes back in the payment-required result. Payment goes in params._meta["x402/payment"]; use an x402-aware MCP client (see https://docs.arcgate.dev/#arcgate/description/mcp-for-agents).

ParametersJSON Schema
NameRequiredDescriptionDefault
takerYes
quoteIdYes
approvalNopermit2
recipientNo
deadlineSecNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the entire behavioral burden and does so thoroughly: fee tiers and x402 payment handshake, quote TTL/default/max, 409/410/422/429/400/404 error semantics, attempt reservation rules, and the fact that 200 responses require downstream signing/sending. This is well beyond what structured fields supply.

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

Conciseness3/5

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

The opening sentence is front-loaded and bold section headers aid scanning, but the fee block is duplicated almost verbatim in the opening and the closing 'Next:' paragraph, and the Permit2 bullet is a dense wall of text. For a tool this complex some length is warranted, yet the redundancy costs it.

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?

With no annotations and no output schema, the description is the sole source of truth and covers return shape (`transactions`, `signatures`), next-step guidance (`sign_permit`, `requote`, `stop`), and failure modes. Nothing an agent needs to call this correctly appears to be missing.

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 0%, so the description must compensate, and it does for most inputs: `quoteId` origin (POST /trade/v1/quote), `recipient` defaulting to `taker`, and the `approval` enum's two modes are each explained with concrete behavior. `deadlineSec` is listed as optional but its meaning and the schema's 10-600 bounds are never elaborated, leaving one 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 first sentence states a specific verb and resource ('Turns a stored quote into unsigned transactions for the taker to sign and send') and immediately distinguishes the tool's role from siblings by noting arcgate never signs, broadcasts or holds funds. An agent can tell this apart from tradeQuote and tradeSwapTx without opening either 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 to POST /trade/v1/swap/tx when a permit must be signed, explains the `approval: "approve"` alternative path, and describes fallback, retry and requote conditions in detail. When-not-use cases (never send `permit` here) and the 5-attempt limit are also stated, leaving little to inference.

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

tradeSwapTxAInspect

The free Permit2 second round: finishes a POST /trade/v1/swap call whose signatures asked the taker to sign a Permit2 PermitSingle.

  • Cost: free, never x402-gated - a payment header, if one is sent anyway, is ignored and nobody is charged. Only reachable once, right after the paid call that opened it.

  • Key inputs: the SAME quoteId, taker and recipient (defaults to taker) as the paid POST /trade/v1/swap call, plus deadlineSec and the required permit: { message: signatures[0].typedData.message, signature } (sign typedData with the taker's key, EIP-712, e.g. viem's signTypedData). permit accepts only message and signature, end to end - any other field, at any level, is 400 invalid_request at parse. The service rebuilds the Permit2 domain itself and checks the signer, spender, token, amount, nonce and both deadlines: a mismatched spender or token, or an amount below amountIn (a larger amount is accepted), is 400 invalid_request; a stale nonce, an expired sigDeadline/expiration, or an invalid signature (verified via ERC-1271 on chain for a contract taker) is 422 swap_reverts. A contract taker can swap, but POST /trade/v1/receipt only reads transactions the taker sends itself, so it answers invalid_request for a Safe, ERC-4337 or batching EIP-7702 wallet: check your own transaction receipt instead.

  • No pending round: 409 no_pending_swap when this quoteId/taker/recipient never paid, named a different taker or recipient, or already used its one free call - call POST /trade/v1/swap first, which is paid and returns the permit this call takes.

  • Freshness: re-quotes and re-simulates exactly like POST /trade/v1/swap, and can answer the SAME 410 quote_expired/409 quote_stale it would - but never with a fresh quote (issue #124's free re-quote is /trade/v1/swap's own paid-quote courtesy, not this free route's).

  • Attempts: a permit round (quoteId, taker, recipient) gets at most 5 failed calls; the next one is 429 swap_attempts_exhausted (next: "requote"), answered without running the swap pipeline. A failed call is a 400 from the permit checks above, a 409, 422, 500 or 503, or an undelivered 200; a delivered 200, a 400 at parse, a 404, a 410 or no_pending_swap uses none. Failed POST /trade/v1/swap calls don't count here. A new POST /trade/v1/swap permit response resets this round's attempts only once delivered (after settlement when paid).

  • Next: sign and send transactions in order, then confirm the fill with POST /trade/v1/receipt (free). This is the last call in search -> quote -> swap -> swap/tx.

ParametersJSON Schema
NameRequiredDescriptionDefault
takerYes
permitYes
quoteIdYes
recipientNo
deadlineSecNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations the description carries the full burden and delivers: cost model (free, x402 header ignored), single-use reachability, the 409/422/429 error taxonomy with retry accounting (5 failed attempts, next: requote), signature-validation rules (ERC-1271, nonce/deadline checks), and the receipt caveat for Safe/4337/7702 takers. This is well beyond what any structured field provides.

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-loaded with purpose then bolded bullet headers make it scannable, and virtually every sentence carries operational content. It is dense and long, with some restatement (free/x402 repeated across cost and freshness notes), so not a perfect 5, but nothing is 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?

For a 5-param nested-Object tool with 0% schema descriptions and no output schema, the description covers inputs, error semantics, attempt limits, freshness behavior and the downstream confirmation step. An agent has everything needed to invoke it correctly and interpret failures.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate and does: it maps quoteId/taker/recipient to the paid call, gives recipient's default, names deadlineSec, and spells out the permit object shape (only message+signature allowed end-to-end, extra fields 400) plus which fields are validated and how. No parameter is left to guesswork.

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?

Opens with a specific verb+resource+scope: it is the free Permit2 second round that finishes a POST /trade/v1/swap call whose signatures requested a PermitSingle. This cleanly distinguishes it from the sibling tradeSwap (the paid first round) without needing to open either 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?

States the exact precondition ('only reachable once, right after the paid call that opened it'), names the alternative to call when no pending round exists (POST /trade/v1/swap), and closes by placing it in the pipeline 'search -> quote -> swap -> swap/tx'. When/when-not/alternatives are all explicit.

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

tradeVenuesAInspect

Lists the DEX venues, hub tokens and launchpads this deployment indexes.

  • Cost: free, never x402-gated.

  • Returns: each venue with an executable flag, hubs and launchpads.

  • Next: use venue ids in POST /trade/v1/quote's venues / excludeVenues.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose cost behavior ('free, never x402-gated') plus the return shape (`executable` flag, hubs, launchpads). It omits pagination, auth, and error behavior, but for a read-only listing the disclosure is solid.

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?

Front-loaded purpose followed by three tight bullets (cost, returns, next step). Every line carries distinct information with zero padding.

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 annotations and no output schema, so the description must explain returns and cost — which it does, including the key `executable` flag and the hand-off to the quote tool. Minor gaps (auth, pagination, error cases) keep it from 5.

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?

Zero parameters with 100% schema coverage; there is nothing to document, so the baseline 4 applies. The description adds no parameter-level detail, which is correct here.

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 (Lists) and resource (DEX venues, hub tokens, launchpads) scoped to 'this deployment indexes'. An agent can tell it apart from quote/swap siblings functionally, though no sibling is named explicitly.

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 'Next' line gives concrete downstream usage: feed venue ids into POST /trade/v1/quote's `venues`/`excludeVenues`. No explicit when-not-to-use or named alternative, so it stops short of 5.

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. 7 tool updates
    • First observedhealth
    • First observedtradeQuote
    • First observedtradeReceipt
    • First observedtradeSearch
    • First observedtradeSwap
    • First observedtradeSwapTx
    • First observedtradeVenues

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources