SpendPreflight
Server Details
Operated by SpendPreflight: sanctions screening and allow/hold/block preflight for x402 payments.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: service info, standalone payee screening, and full payment preflight. Descriptions explicitly reference each other to guide selection, eliminating confusion.
All tools follow a consistent snake_case verb_noun pattern: get_service_info, check_payee, preflight_payment. The convention is predictable and readable.
Three tools is slightly thin but each serves a distinct, essential role in the preflight workflow. It's well-scoped for a focused payment safety service.
Covers reference info, standalone screening, and payment decision, but lacks tools for receipt retrieval, rule management, or historical checks. Minor gaps that agents can likely work around.
Available Tools
3 toolscheck_payeeCheck payee before payingARead-onlyIdempotentInspect
Payee risk check. Screens a payee wallet address and name against the OFAC SDN sanctions list and checks the merchant domain's registration age and DNS. Returns risk low|medium|high|unknown with flags such as sanctioned_address, sanctioned_name_possible, new_domain. Use for standalone payee screening before paying. Provide at least one of domain, address, or name; inputs may be combined, and domain accepts a hostname or URL. For an x402 challenge or cart and an allow/hold/block spending-rule decision, use preflight_payment instead. Price $0.01 per call (free trial first).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Merchant or payee legal name | |
| domain | No | Merchant domain or URL, e.g. shop.example.com | |
| address | No | Payee wallet address (EVM 0x…, BTC, etc.) |
Output Schema
| Name | Required | Description |
|---|---|---|
| risk | Yes | Overall payee risk |
| flags | Yes | e.g. sanctioned_address, sanctioned_name_exact, sanctioned_name_possible, new_domain, domain_no_dns |
| domain | No | Domain age/DNS signals, or null if no domain given |
| sanctions | Yes | OFAC SDN matches |
| data_as_of | Yes | Timestamp of the sanctions data used |
| disclaimer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld), and the description adds behavior beyond them: which external sources are queried (OFAC SDN, DNS/domain-age lookups), the possible risk outputs (low|medium|high|unknown), example flags, and a per-call price with a free trial. That is genuinely useful context an agent cannot get from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then routing rule, then input constraint, then price. Every sentence carries distinct information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the description need not enumerate return fields, and it still briefly previews the risk levels and flags. Combined with the routing rule, input constraint, and pricing, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the per-field meanings are already documented. The description nonetheless adds a cross-field constraint not expressible in the schema ('provide at least one of domain, address, or name; inputs may be combined'), which is real added meaning, though the domain format note mostly duplicates the schema example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (screen a payee wallet address/name/domain) and names exactly what it checks against (OFAC SDN list, domain registration age, DNS). It is clearly distinguishable from the sibling preflight_payment, which is explicitly called out as the different tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('standalone payee screening before paying') and when-not ('for an x402 challenge or cart and an allow/hold/block spending-rule decision, use preflight_payment instead'), naming the alternative and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_infoSpendPreflight: pricing, defaults, how to payARead-onlyIdempotentInspect
Free, read-only service reference. Use first to learn prices, default spending rules, payment setup, trial allowance, and integration links. Takes no arguments and performs no payee screening or payment decision. Use check_payee for standalone payee risk; use preflight_payment for an x402 challenge or cart and an allow/hold/block decision.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| site | Yes | |
| trust | Yes | |
| payment | Yes | |
| pricing | Yes | |
| http_api | Yes | |
| disclaimer | Yes | |
| guarantees | Yes | |
| when_to_use | Yes | |
| client_guard | Yes | |
| default_rules | Yes | |
| free_trial_per_day | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint and closed-world behavior, so the safety profile is covered. The description adds genuinely useful context beyond that: it is free, takes no arguments, and deliberately performs no payee screening or payment decision, preventing misuse as a decision tool. It stops short of describing caching/refresh behavior for pricing data, which is the only remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the value proposition, then scope exclusions, then sibling routing. Every clause earns its place with no repetition of schema or annotation content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a zero-argument, read-only reference tool the description supplies everything needed: what it returns conceptually, that it is safe and free, and how it relates to both siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-arg tool applies. The explicit statement that it takes no arguments usefully confirms the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('read-only service reference') and enumerates exactly what it returns: prices, default spending rules, payment setup, trial allowance, integration links. It also explicitly names what it is not (no payee screening, no payment decision), which separates it cleanly from both siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit ordering cue ('Use first to learn prices...') and routes the agent to the correct alternatives by condition: check_payee for standalone payee risk, preflight_payment for an x402 challenge or cart needing an allow/hold/block decision. Nothing about when to pick this tool 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.
preflight_paymentPreflight a payment (allow / hold / block)ARead-onlyInspect
Spend preflight for AI agents. Send the x402 PaymentRequired body (v1 or v2) you received, or a cart, plus optional rules (per-payment max, hold threshold, daily cap, allowlists, new-domain days). Returns allow|hold|block with reasons, the cheapest acceptable payment option, and a receipt id. Read-only: never signs, settles, or holds funds. Use before every payment. It includes payee screening in its spending-rule decision. For standalone wallet, name, or domain screening without a payment, use check_payee instead. Each repeat call creates a new receipt and may consume another trial or paid call. Price $0.02 per call (free trial first).
| Name | Required | Description | Default |
|---|---|---|---|
| cart | No | Use instead of challenge for agent checkout / card payments | |
| rules | No | Spending rules; all optional. See get_service_info for defaults. | |
| challenge | No | The x402 PaymentRequired body (v1 or v2) your agent received with HTTP 402 | |
| resource_url | No | URL that returned the 402, if not inside the challenge | |
| spent_today_usd | No | What this agent already spent today, for the daily cap |
Output Schema
| Name | Required | Description |
|---|---|---|
| payee | No | Payee screening details |
| reasons | Yes | Every rule that fired, prefixed with its decision |
| receipt | Yes | Log this for audit |
| decision | Yes | Pay on allow, ask a human on hold, never pay on block |
| chosen_option | No | The cheapest acceptable payment option |
| options_evaluated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true, openWorldHint=true, idempotentHint=false), and the description adds context beyond them: it never signs/settles/holds funds, each repeat call mints a new receipt and may consume another trial or paid call, and it costs $0.02 per call. The non-idempotency implication and cost are exactly the kind of behavioral detail an agent needs before retrying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose, inputs, outputs, safety, routing, and cost in that order, with no filler sentences. It is longer than strictly necessary for a tool this simple, but each sentence carries operational weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description still names the return shape (allow|hold|block, reasons, cheapest acceptable option, receipt id), and it covers nested-object inputs, cost, and the sibling alternative. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes further by explaining the two mutually exclusive input modes (x402 PaymentRequired challenge vs. cart) and summarizing what the rules object controls (per-payment max, hold threshold, daily cap, allowlists, new-domain days), giving semantic framing the raw schema doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Spend preflight for AI agents") plus the exact decision output (allow|hold|block). It also distinguishes itself from the sibling check_payee by naming it directly, so an agent can route 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ("Use before every payment"), names the alternative for the adjacent case ("For standalone wallet, name, or domain screening without a payment, use check_payee instead"), and clarifies that payee screening is already bundled here. When-to-use, when-not-to-use, and the alternative are all present.
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.
3 tool updates
- First observed
check_payee - First observed
get_service_info - First observed
preflight_payment
Publisher details
- Operator
- SpendPreflight · Publisher source
- Operator website
- https://spendpreflight.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://spendpreflight.com/#assistants · Publisher source
- Trust center
- https://spendpreflight.com/trust.html · Publisher source
- Restrictions
- No account, API key or OAuth required. Service info is free. Check/preflight share 3 free calls per IP per UTC day with HTTP; further calls require x402-over-MCP and USDC on Base ($0.01 check, $0.02 preflight). Informational screening; never signs, holds or settles the payment reviewed. · Publisher source
Related MCP Connectors
Hosted x402 preflight for action authority, payment mandate, destination, expiry and replay.
Pay-per-call compliance via x402: wallet sanctions, OFAC name, UK + US company verification.
Pay-per-call checks for AI agents: sanctions, MiCA, French KYB, AI Act. USDC via x402.
High-frequency OFAC wallet screening and recurring signed x402 checks for autonomous agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides a pre-signature payment-risk verdict (GO/HOLD/STOP) for x402 payments based on counterparty reputation, price anomaly, and OFAC sanctions.-
- AlicenseNot gradedqualityAmaintenanceEnables agents and developers to check x402 endpoints, assess scores and wallet risks, authorize payments with spending rules, and report outcomes before an agent pays.MIT
- AlicenseNot gradedqualityCmaintenanceCrypto compliance tools for AI-agent payments: screen any address for sanctions, frozen-stablecoin and hacker/mixer exposure across 8+ chains, trace fund taint, and get an allow/review/decline decision before settlement. Free keyless address checks; deeper endpoints are x402-payable.314 npmMIT
- AlicenseNot gradedqualityCmaintenanceRoutes blockchain address screening to third-party KYC/AML providers and checks public sanctions lists, serving as a clean-money gate primitive for MCP-compatible agents.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.