Skip to main content
Glama

tollboothswap-mcp — Token Swaps & Honeypot Checks for AI Agents (MCP Server)

MCP server for Tollbooth: non-custodial token swap execution and token safety screening on 8 chains — Solana, Base, Ethereum, Arbitrum, Polygon, Optimism, BSC, Avalanche. Quotes and symbol resolution are free; swap builds (~$0.005) and safety checks ($0.01) are paid per-call in USDC via the x402 protocol — no API keys, no accounts, no subscriptions.

Quick start

npx tollboothswap-mcp

Claude Desktop / Cursor / any MCP client

{
  "mcpServers": {
    "tollbooth": {
      "command": "npx",
      "args": ["-y", "tollboothswap-mcp"],
      "env": {
        "TOLLBOOTH_PAYER_KEY": "0x<EVM private key holding USDC on Base>"
      }
    }
  }
}

TOLLBOOTH_PAYER_KEY is optional: without it the free tools (resolve_token, get_quote, get_service_info, get_receipt) work fully, and paid tools return x402 payment instructions instead of results. With it, tolls are paid automatically and gaslessly (EIP-3009 — the key never spends gas, only USDC).

Related MCP server: HoodScope MCP

Tools

Tool

Cost

What it does

resolve_token

free

Ticker symbol → contract addresses, ranked by DEX liquidity

get_quote

free

Fee-inclusive indicative swap quote

check_token

$0.01

Honeypot / rug-pull / freeze-authority / sell-tax screening with verdict + findings

build_swap

~$0.005

Unsigned, ready-to-sign swap transaction + HMAC-signed receipt (safeMode screens both tokens first)

get_receipt

free

Verify a past build receipt by id

get_service_info

free

Service manifest: chains, fees, pricing

Trust model

Tollbooth is non-custodial: it builds transactions but never holds keys or funds. Your agent signs and submits everything with its own wallet. Every paid build returns a signed receipt for audit trails.

License

MIT

Available Tools

6 tools
build_swapBuild swap transactionAInspect

Build an unsigned swap transaction for the taker wallet to sign and submit. Costs an x402 toll (paid automatically when TOLLBOOTH_PAYER_KEY is set). Returns the transaction, the quote, and a signed receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain to swap on
takerYesWallet address that will sign and send the swap
amountYesSell amount as an integer string in the input token's base units
safeModeNoScreen both tokens first; refuses the build if either is critical-risk (honeypot etc.)
inputTokenYesToken being sold: mint address (solana) or ERC-20 address (EVM chains)
outputTokenYesToken being bought: mint address (solana) or ERC-20 address (EVM chains)
slippageBpsNoMax slippage in bps (default 100)

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNoSuggested follow-up calls
chainNo
errorNoPresent when the request failed or payment is required
quoteNoQuote the transaction was built from
safetyNoSafety reports when safeMode was requested
acceptsNox402 payment options when unpaid
receiptNoSigned receipt for this build
transactionNoUnsigned transaction for the taker to sign

TDQS

A4.2/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations: it costs an x402 toll (auto-paid via TOLLBOOTH_PAYER_KEY) and returns a signed receipt. Annotations already flag the tool as non-read-only and non-idempotent, so the description enriches rather than contradicts. It does not fully explore side effects or edge cases, but it covers the most important cost behavior.

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, each earning its place: purpose, cost, and return values. It is front-loaded with the core action and avoids fluff or repetition of schema fields.

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 moderately complex tool with 7 parameters and an output schema, the description covers the essential context: what it builds, for whom, the associated cost, and what is returned. It does not fully explain edge cases like when TOLLBOOTH_PAYER_KEY is absent, but the output schema and rich parameter descriptions fill most gaps. Slightly more detail on the toll behavior would make it a 5.

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?

The input schema has 100% coverage with detailed descriptions for every parameter (chain, taker, amount, safeMode, etc.). The tool description does not add any parameter-specific meaning beyond what the schema already provides, so it meets the baseline for high schema coverage without adding extra value.

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 ('build') and resource ('unsigned swap transaction for the taker wallet'), clearly distinguishing it from sibling tools like get_quote (which only fetches a quote) and get_receipt. It also specifies the purpose (to sign and submit) and the output (transaction, quote, receipt).

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 clearly implies when to use this tool: when you need an unsigned swap transaction for a taker wallet to sign. It does not explicitly mention alternatives or when not to use it, but the context and sibling list make the differentiation clear. This is close to a 5 but lacks a direct exclusion statement.

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

check_tokenCheck token safetyA
Idempotent
Inspect

Token safety screen before trading: honeypot, rug-pull, freeze/mint authority, transfer hooks, sell tax, blacklists. Returns verdict (ok/warn/critical/unknown), a 0-100 risk score, and itemized findings. Costs an x402 toll.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain to swap on
tokenYesToken to screen: mint address (solana) or ERC-20 address (EVM chains)

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNoSuggested follow-up calls
chainNo
errorNoPresent when the request failed or payment is required
tokenNo
sourceNoData source used for the screen
acceptsNox402 payment options when unpaid
verdictNook, warn, critical, or unknown
findingsNoIndividual risk findings
riskScoreNo0 (safe) to 100 (critical)

TDQS

A4.3/5.0
Behavior4/5

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

Description adds the key behavioral fact that the tool 'costs an x402 toll' and specifies return values (verdict, risk score, findings). This goes beyond annotations, which already mark it as idempotent and non-destructive. No contradiction with readOnlyHint=false is present.

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

Conciseness5/5

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

Two focused sentences: first states purpose and checks, second states outputs and cost. Every sentence earns its place with no redundant phrasing.

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 output schema exists and annotations are present, the description sufficiently covers purpose, key behaviors, returns, and cost. The tool is moderately complex but the description is complete enough for selection and 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?

Input schema provides 100% coverage with descriptions for both chain and token, including enum values and address format. The description does not add new parameter semantics, 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 states a specific verb-resource pair: 'Token safety screen before trading,' and enumerates concrete checks (honeypot, rug-pull, freeze/mint authority, transfer hooks, sell tax, blacklists). This clearly distinguishes it from sibling tools like build_swap or get_quote.

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 phrase 'before trading' gives clear context and implies it should be used as a pre-trade safety step. It does not explicitly name alternatives or state when not to use it, but the intended usage is evident.

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

get_quoteGet swap quoteA
Read-onlyIdempotent
Inspect

Get a free indicative swap quote (output amount includes Tollbooth's fee). Use before build_swap to decide whether to trade.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain to swap on
amountYesSell amount as an integer string in the input token's base units
inputTokenYesToken being sold: mint address (solana) or ERC-20 address (EVM chains)
outputTokenYesToken being bought: mint address (solana) or ERC-20 address (EVM chains)
slippageBpsNoMax slippage in bps (default 100)

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNoHow to build the swap transaction
chainNo
feeBpsNoTollbooth fee in basis points
inputTokenNo
inputAmountNoSell amount in base units
outputTokenNo
slippageBpsNo
outputAmountNoEstimated buy amount in base units, after fees

TDQS

A4.4/5.0
Behavior4/5

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

Annotations (readOnlyHint, openWorldHint, idempotentHint) already convey safety and side-effect behavior. The description adds 'free indicative quote' and 'output amount includes Tollbooth's fee', which are meaningful behavioral details beyond the annotations. No contradiction.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the primary action and key context (free, indicative, fee included). Every part is useful, with no 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?

Given the output schema exists and annotations cover safety, the description provides sufficient context for a quote tool: usage timing, fee inclusion, and decision support. It doesn't mention potential prerequisites like token resolution, but that is indirectly covered by schema and sibling tools.

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?

The input schema provides descriptions for all 5 parameters (100% coverage), including chain enum, amount format, and slippage default. The description does not add parameter-specific guidance, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool gets a free indicative swap quote and explicitly distinguishes it from build_swap (execution). It also adds the specific detail that output includes Tollbooth's fee, making the purpose precise and unique 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 Guidelines5/5

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

The description explicitly directs the agent to 'Use before build_swap to decide whether to trade', providing clear when-to-use guidance and implicitly naming the alternative. This is helpful for tool selection and sequencing.

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

get_receiptGet signed receiptA
Read-onlyIdempotent
Inspect

Fetch a signed Tollbooth receipt by id and verify its signature.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReceipt id returned by build_swap

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoReceipt id
errorNoPresent when the receipt was not found
validNoWhether the signature verified
receiptNoReceipt payload
signatureNoServer signature over the receipt

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly and idempotent hints. The description adds the behavior of signature verification, which is relevant context beyond what annotations provide. No contradictions.

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

Conciseness5/5

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

Single sentence with no filler. Clearly front-loaded with the primary action 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?

For a one-parameter read-only tool with output schema, the description is sufficient. It covers the main purpose and verification aspect, though it doesn't mention failure modes, which the output schema could cover.

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 param description already explains that id is a receipt id from build_swap. The tool description adds no additional meaning beyond what the schema provides, so 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?

The description clearly states the action (Fetch), resource (signed Tollbooth receipt), and distinguishes it from siblings by focusing on receipts and signature verification. This is 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 context of usage is clear: the id comes from build_swap, implying this is used after creating a swap. While it doesn't explicitly say when not to use it, the workflow hint provides sufficient guidance.

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

get_service_infoGet service infoA
Read-onlyIdempotent
Inspect

Get Tollbooth service metadata: supported chains, swap fee, x402 toll pricing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoService name
paymentNox402 payment networks and pricing
endpointsNoHTTP endpoints exposed by the service
descriptionNoWhat the service does

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds value by disclosing exactly what metadata is returned (supported chains, swap fee, x402 toll pricing), which is beyond the structured annotations. No contradiction exists.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action and resource, then lists key content. Every element adds information, with no fluff or redundancy.

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 zero-parameter metadata retrieval tool with an output schema and strong annotations, the description fully covers the necessary context. It specifies the tool's scope and content without needing to describe return formats, which the output schema handles.

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, so the baseline is 4 per the rubric. The description is not required to explain parameter semantics since there are none, and the schema trivially covers 100%.

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 'Get' and the resource 'Tollbooth service metadata', then lists specific content: supported chains, swap fee, x402 toll pricing. This is specific enough to distinguish from sibling tools like get_quote or get_receipt, which focus on trade operations.

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 when to use the tool—whenever service-level metadata is needed—but it does not explicitly mention alternatives or exclusions. Given the zero-parameter, self-contained nature of the tool, the implied usage is acceptable, but explicit guidance is absent.

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

resolve_tokenResolve token symbolA
Read-onlyIdempotent
Inspect

Resolve a token ticker symbol (e.g. PEPE, WIF, USDC) to contract addresses on a chain, free. Curated majors return one verified match; others return live DEX matches ranked by liquidity so you can pick the real token over imitations. Use before get_quote when you only know the symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain to swap on
symbolYesTicker symbol to resolve, e.g. USDC, PEPE, WIF

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNoSuggested follow-up calls
chainNoChain searched
symbolNoSymbol searched
matchesNoMatching tokens, best first

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint, openWorldHint, and idempotentHint annotations, the description explains that curated majors return one verified match, while other symbols return live DEX matches ranked by liquidity, which informs the agent about result variability and how to handle imitations. This adds behavioral context not captured in annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and examples, and each sentence provides distinct value. No redundancy.

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 tool is simple with two well-documented parameters, an output schema exists, and annotations cover safety and idempotence. The description explains the nuanced return behavior (verified vs. ranked matches) and its place in the swap workflow, making it 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?

The schema already provides full descriptions for both parameters, including the chain enum and symbol examples. The description reinforces the symbol examples but does not add meaningful new parameter semantics, so the baseline of 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?

The description clearly states a specific action (resolve a token ticker symbol to contract addresses) with concrete examples (PEPE, WIF, USDC) and explicitly positions the tool in the workflow ('Use before get_quote when you only know the symbol'), which distinguishes it from the sibling 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 gives explicit usage guidance: 'Use before get_quote when you only know the symbol.' It also details the two modes (curated majors vs. live DEX matches), helping the agent decide when the tool is appropriate. However, it does not explicitly state when not to use it, such as when the address is already known.

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. 6 tool updatesv1.0.2
    • First observedbuild_swap
    • First observedcheck_token
    • First observedget_quote
    • First observedget_receipt
    • First observedget_service_info
    • First observedresolve_token

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct stage of the swap workflow: metadata, token resolution, safety check, pricing, transaction building, and receipt verification. The only near-overlap (get_quote vs build_swap) is clearly separated by free indicative vs paid transaction-building.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern, with get_ prefixed for fetch operations and build_, resolve_, check_ for actions. This makes the tool set predictable and easy to navigate.

Tool Count5/5

Six tools is well-scoped for a token swap service, covering every essential step from token discovery to receipt verification without excess. Each tool has a clear purpose and no redundant entries.

Completeness5/5

The tool surface fully covers the swap lifecycle: resolve_token → check_token → get_quote → build_swap → get_receipt, with get_service_info providing necessary context. There are no obvious missing operations for the stated purpose.

Related MCP Connectors

Related MCP Servers