Skip to content

SpendPreflight

by spendpreflight · remote · no sign-in to list tools · v1.0.0 · published by GitHub user spendpreflight

Operated by SpendPreflight: sanctions screening and allow/hold/block preflight for x402 payments.

Final · 1Changes · 3

5 tools: 1 do something that can't be undone, 3 change things and 1 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http spendpreflight https://api.spendpreflight.com/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn1 info
  • The server marks "preflight_payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":false,"openWorldHint":true}; The name "preflight_payment" says "payment": a word that usually means money moves, which cannot be taken back.

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...ic seven-day report link. No payment or credentials; GET cannot validate a POST-only endpoi..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

5 tools

Can't be undone 1Claude Code: ask
  • preflight_paymentCall this before any x402/USDC payment to evaluate the actual challenge or cart before signing.1 finding

    Why it is in this group

    • The name "preflight_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "preflight_payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":false,"openWorldHint":true}; The name "preflight_payment" says "payment": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Call this before any x402/USDC payment to evaluate the actual challenge or cart before signing. 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, endpoint category price multiple, liveness and payTo changes). 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).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: false
Changes things 3Claude Code: ask
  • check_endpointCached x402 endpoint observations, operated by SpendPreflight.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Cached x402 endpoint observations, operated by SpendPreflight. Returns a transparent score (or unknown), its components and seven-day unpaid probe history for an already publicly listed URL. Never fetches the caller's URL or pays the endpoint. Unlisted, unavailable or stale data is not charged. This is not a paid-delivery or compliance guarantee. Provide the exact resource URL; add method when the URL has multiple advertised methods. Use for endpoint history and price context before paying. Use check_payee for wallet/name screening or preflight_payment for an allow/hold/block decision. Price $0.005 per cached lookup (shared free trial first). An unknown score means missing evidence; repeated paid calls may incur another charge.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • idempotentHint: true
  • check_payeePayee risk check.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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. Call this before a USDC payment when you only have a payee name, wallet or domain. 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).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: true
  • lint_endpointFree x402 Lint by SpendPreflight.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...ic seven-day report link. No payment or credentials; GET cannot validate a POST-only endpoi..."

      What this check looks for
    Description, as the server wrote it
    Free x402 Lint by SpendPreflight. Checks a public HTTPS endpoint with an unpaid GET: v1/v2 challenge shape, payTo/asset/network syntax, price, Bazaar metadata and browser CORS headers. Returns fixes and a public seven-day report link. No payment or credentials; GET cannot validate a POST-only endpoint or paid delivery. Do not submit private URLs.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 1Claude Code: allow
  • get_service_infoFree, read-only service reference.No findings

    Why it is in this group

    • The name "get_service_info" says "get": a word for reading.
    Description, as the server wrote it
    Free, read-only service reference. Use when you need prices, default spending rules, payment setup, trial allowance, or a ready-to-use example call. If you already have a payment challenge or cart, call preflight_payment directly; this reference call is optional. 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.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http spendpreflight https://api.spendpreflight.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__spendpreflight__get_service_info"
    ],
    "ask": [
      "mcp__spendpreflight__lint_endpoint",
      "mcp__spendpreflight__check_payee",
      "mcp__spendpreflight__preflight_payment",
      "mcp__spendpreflight__check_endpoint"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as spendpreflight. Review it before you use it.