Skip to main content
Glama

smartflow-verify-mcp

MCP server for SmartFlow Observatory, an independent x402 observatory on Base that runs its own ledger of USDC micro-transfers. It gives any MCP-capable agent (Claude Code, Claude Desktop, Cursor, and others) two capabilities:

  1. Read the integrity-sealed decomposition of x402 network growth: how much of the headline volume is wash or self-dealing activity, how much is ERC-4337 bundler plumbing, and how large the organic core really is. Free.

  2. Order a $399 signed, human-reviewed audit of any x402 endpoint or receiving wallet, paid over the x402 rail itself. No human needed on the buying side.

The server is a pure HTTP client of the public observatory API. It holds no keys, stores nothing locally, and never moves funds. Payment, if you choose to make one, happens entirely outside this server through your own wallet or x402 client.

Human-facing verification portal: https://verify.smartflowproai.com

Installation

Requires Node.js 18 or newer.

Claude Code

claude mcp add smartflow-verify -- npx -y smartflow-verify-mcp

Claude Desktop

Add to claude_desktop_config.json (Settings > Developer > Edit Config):

{
  "mcpServers": {
    "smartflow-verify": {
      "command": "npx",
      "args": ["-y", "smartflow-verify-mcp"]
    }
  }
}

Restart Claude Desktop and the three tools appear under the smartflow-verify server.

From a local checkout

npm install
claude mcp add smartflow-verify -- node /path/to/mcp/src/server.js

Related MCP server: x402farm-mcp

Tools

get_network_decomposition (free)

Input: none.

Output: the full sealed decomposition document plus fields added by this client:

  • data: the dataset (30d / 7d / previous-7d windows; universe, bundler, facilitator, wash, and clean_core categories with tx counts, USDC volume, and unique payers; category overlaps; concentration checks; explicit limitations).

  • seal and seal_verified: the server publishes a SHA-256 seal over the canonical JSON of data. This client recomputes it locally and reports whether it matches, so the numbers are tamper-evident end to end. The recipe is included in the response.

  • data_age_hours: how stale the snapshot is. The dataset refreshes roughly daily.

Use this before trusting any headline x402 volume figure. Note the clean_core field is a dataset category name meaning: facilitator-settled transfers with no flagged conditions after the full 48h detection window. Figures reflect the observatory's ingest time, so the most recent hour of activity may be under-represented.

order_endpoint_audit (creates a $399 payable order; the call itself is free)

Input:

  • target (string): an x402 endpoint URL (https://...) or a receiving wallet address (0x...).

  • email (string): where the signed audit report is delivered.

Output: an order id (aud_ + 16 hex chars), plain-language payment instructions, and the raw x402 payment challenge (see payment flow below).

What you are buying: a signed, human-reviewed audit of the target covering wash-share, payer concentration, demand dispersion, and attribution, delivered by email within 48 business hours of payment.

Calling this tool moves no funds. It only creates an order and returns payment instructions. Unpaid orders are harmless and expire on their own within 24h.

get_audit_order_status (free)

Input:

  • order_id (string): the id returned by order_endpoint_audit.

Output: order state. pending_payment means the exact-amount payment has not been detected yet; paid: true confirms the payment was matched; a delivered state means the signed report was emailed.

Payment detection reads Base USDC transfer logs and can lag a few minutes behind the chain. If you just paid, wait 2-5 minutes and poll again before assuming a problem.

Free vs paid

Tool

Cost

get_network_decomposition

free

order_endpoint_audit

free to call; creates a $399 payable order

get_audit_order_status

free

Nothing in this package can spend money by itself. A purchase happens only if you (or your operator) send the quoted USDC amount from your own wallet.

How the x402 payment flow works

  1. order_endpoint_audit POSTs to the observatory API. The API answers HTTP 402 Payment Required with an x402 v2 challenge envelope. That 402 is the success path for order creation, not an error.

  2. The challenge quotes a per-order unique amount: $399 plus a unique micro-USDC fraction, for example 399.002732 USDC. The fraction is how the observatory matches your on-chain payment to your order. Pay the exact amount; do not round it.

  3. Pay in either way:

    • x402 client: use the exact scheme entry from the accepts array (network eip155:8453, USDC asset contract, payTo address are all in the challenge).

    • Plain transfer: send the exact USDC amount on Base to the payTo address from any wallet.

  4. After paying, poll get_audit_order_status with your order id. Detection usually completes within minutes.

  5. Once matched, the order flips to paid and the signed audit report is prepared, human-reviewed, and emailed to the address you gave, within 48 business hours of payment.

Safety rules built into the tool descriptions, worth repeating:

  • If a payment submission times out, poll status before paying again. Never pay the same order twice.

  • Unpaid orders expire within 24h and cost nothing.

  • Agents with spend policies: creating an order is free, but paying it is a real $399 purchase. Confirm with your operator if your policy requires it.

Example session

A typical agent conversation:

User: Before I integrate with this x402 endpoint, is the network volume real? And get me an audit of https://api.example-x402-service.com/paywall

Agent calls get_network_decomposition, checks seal_verified: true, and reports that a large share of headline volume carries wash flags while the organic core is far smaller, citing exact figures and the dataset's own limitations.

Agent calls order_endpoint_audit with the target URL and the user's email, and relays the payment instructions: "Pay exactly 399.002732 USDC on Base to 0xd779...C893. The order id is aud_a80214548a0c4276. Unpaid orders expire in 24h."

User pays from their wallet (or approves their agent's x402 client to pay).

Agent polls get_audit_order_status until paid: true, then tells the user the signed report will arrive by email within 48 business hours.

Configuration

  • SMARTFLOW_BASE_URL (env var): overrides the API base. Default https://verify.smartflowproai.com.

  • HTTP timeout is 25s per request; the server reports timeouts as retryable network errors and never retries payments on its own.

Selftest (from a source checkout)

npm run selftest

Writes selftest.log with the full JSON-RPC exchange against the live API. The selftest creates one real unpaid test order for https://example.com; test orders are harmless and expire in 24h. The selftest never pays anything.

License

MIT. See LICENSE.

Available Tools

3 tools
get_audit_order_statusCheck audit order status (free)A

FREE, read-only. Poll the status of an audit order created with order_endpoint_audit. Status pending_payment means the exact-amount USDC payment has not been detected yet; paid: true confirms your x402 payment was matched; a delivered state means the signed report was emailed. Caveats: payment detection reads Base USDC transfer logs and can lag a few minutes behind the chain. If you just paid the exact amount, wait 2-5 minutes and poll again before assuming a problem. Unpaid orders expire within 24h.

NameRequiredDescriptionDefault
order_idYesThe order id returned by order_endpoint_audit, e.g. aud_2e4270db0cc840c3.

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden, and it does: free and read-only, payment detection reads Base USDC transfer logs, detection can lag the chain by minutes, and unpaid orders expire. These are exactly the behavioral facts an agent needs to avoid misinterpreting a pending order as a failure.

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 the most important qualifiers ('FREE, read-only') followed by status semantics and then caveats. It is dense but nearly every sentence carries operational value; the status-value enumeration is slightly list-like but not wasteful.

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 one-parameter polling tool with no output schema, the description supplies the return-state vocabulary (pending_payment, paid: true, delivered), the delivery channel (emailed report), and timing caveats. Nothing an agent needs in order to call it and interpret the result is missing.

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 single order_id parameter already documents its origin and format with a pattern and example. The description reinforces that the id comes from order_endpoint_audit but adds no syntax or validation meaning beyond the schema, 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?

States a specific verb and resource: poll the status of an audit order. It also anchors the resource to its origin ('created with order_endpoint_audit'), which cleanly separates it from the sibling that creates orders and from get_network_decomposition.

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?

Gives explicit operational guidance: poll after paying, wait 2-5 minutes before assuming a problem, and expect unpaid orders to expire within 24h. It also names the creating tool, so an agent knows the sequence of calls without inference.

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

get_network_decompositionx402 growth, decomposed (free)A

FREE, read-only. Integrity-sealed decomposition of x402 payment growth on Base from SmartFlow Observatory's independent ledger of USDC micro-transfers: how much of the headline volume is wash / self-dealing / clone-fleet activity vs bundler plumbing vs the organic clean core. Returns the full dataset plus seal_verified (this client recomputes the SHA-256 seal locally, recipe included in the response) and data_age_hours. Use this BEFORE trusting any headline x402 volume figure. Caveats: data refreshes roughly daily (check data_age_hours); figures reflect the observatory's ingest time, so the most recent ~1h of activity may be under-represented.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so: it declares read-only and free access, explains the integrity mechanism (SHA-256 seal recomputed locally with the recipe in the response), and discloses two real limitations — roughly daily refresh and ~1h ingest lag. This is exactly the behavioral context an agent needs before quoting numbers.

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 access mode and subject, then the decomposition, then the return fields, then caveats — a logical order with no filler sentences. Some phrasing ("Integrity-sealed," "independent ledger") leans promotional, but each clause still conveys usable 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?

For a zero-parameter tool with no output schema and no annotations, the description covers access mode, data provenance, what is returned, how to verify integrity, and the freshness caveats. Nothing an agent needs in order to call it or to interpret the result is 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?

The tool takes zero parameters, so there is no parameter meaning to add and the baseline applies. The description instead spends its space on return-value semantics (seal_verified, data_age_hours), which is a sensible use of the budget for a no-arg 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 names a specific resource and a specific analytical output: a decomposition of x402 payment growth on Base split into wash/self-dealing/clone-fleet vs bundler plumbing vs organic core. That is far more precise than the title alone, and it is clearly distinguishable from the sibling audit/order-status 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?

It gives an explicit trigger: "Use this BEFORE trusting any headline x402 volume figure," which tells the agent exactly when to reach for it. It stops short of naming alternatives or stating when NOT to use it, but the caveats section supplies the boundary conditions (stale data, recent-hour under-representation).

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

order_endpoint_auditOrder a $399 x402 endpoint auditA

Creates a PAYABLE ORDER for a $399 signed, human-reviewed audit of an x402 endpoint or receiving wallet (wash-share, payer concentration, demand dispersion, attribution), delivered by email within 48 business hours of payment. COST: calling this tool is free and moves NO funds. It returns an x402 exact-scheme payment challenge (HTTP 402) with a per-order UNIQUE USDC amount on Base, plus plain-language payment instructions and the order id. The purchase only happens if you (or your operator) then pay the EXACT quoted amount to the quoted address; do not round it. This is a real $399 purchase; confirm with your operator if your spend policy requires it. Unpaid orders are harmless and expire on their own within 24h. After paying, poll get_audit_order_status with the order id; if a payment submission times out, poll status BEFORE paying again. Never pay the same order twice.

NameRequiredDescriptionDefault
emailYesEmail address to deliver the signed audit report to.
targetYesWhat to audit: an x402 endpoint URL (https://...) or a receiving wallet address (0x...).

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full behavioral burden and does so: calling the tool is free and moves no funds, it returns an HTTP 402 exact-scheme challenge with a per-order unique USDC amount on Base, the purchase only completes on payment of the exact unrounded amount, and orders expire within 24h. The double-payment hazard and the timeout-recovery procedure are both disclosed, which is exactly the context annotations would otherwise have to supply.

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 information is front-loaded: cost and non-charge guarantee come before the mechanics, and the operational warnings close it out. It is dense but nearly every sentence carries a distinct fact (price, no-charge, return shape, unique amount, expiration, polling, no double-pay), with only mild repetition between the COST label and the later 'real $399 purchase' sentence.

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 no annotations, so the description must explain both the response and the safety profile, and it does: it names the returned 402 challenge, the unique amount, the plain-language instructions, and the order id. Combined with the payment and polling lifecycle, an agent has everything needed to invoke this correctly and safely.

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 both parameters (target and email) are already documented in the schema, including that target may be a URL or a wallet address. The description adds only marginal meaning beyond that, mainly the 48-business-hour delivery window tied to the email parameter. Baseline 3 applies since 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?

The description opens with a concrete verb and artifact: "Creates a PAYABLE ORDER for a $399 signed, human-reviewed audit of an x402 endpoint or receiving wallet." It names the deliverable, the audited dimensions, the price, and the delivery channel, which lets an agent separate it instantly from the sibling get_audit_order_status (status polling) and get_network_decomposition.

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?

It states explicitly when to call (to buy the audit), when not to worry (unpaid orders are harmless and expire in 24h), and the exact follow-up sequence: pay the quoted amount, then poll get_audit_order_status with the order id, and poll before re-paying if a submission times out. It also flags the operator-confirmation condition for spend policies, which is the one real prerequisite for this tool.

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 updatesv0.1.2
    • First observedget_audit_order_status
    • First observedget_network_decomposition
    • First observedorder_endpoint_audit

TDQS

A4.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: creating a payable audit order, polling that order's status, and retrieving network decomposition data. The descriptions reinforce the boundaries with explicit sequencing instructions, leaving no realistic chance of misselection.

Naming Consistency5/5

All three names follow a predictable verb_noun pattern: get_audit_order_status, get_network_decomposition, and order_endpoint_audit. The verbs differ naturally by action, but there is no mixing of casing or naming styles.

Tool Count5/5

Three tools is well-scoped for a focused verification-and-ordering server. Each tool earns its place: one read for decomposition, one order creation, and one status poll for the audit lifecycle.

Completeness4/5

The audit-order lifecycle is covered through creation and status polling, and decomposition data is separately available. Minor gaps exist, such as no order listing, cancellation, or direct report retrieval, but expiry and email delivery provide reasonable workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers