CallMeter
First paid job: parse a receipt → structured JSON ≈ $0.10 via x402 USDC on Base.
What it can do
- Extract.Structured Data: Extract structured JSON (emails, phones, URLs, key-values, or schema-shaped fields) from messy plain text or HTML. Call when the agent already has document text/HTML and needs
- Extract.Webpage: Fetch a public http(s) URL and return structured page facts as JSON (SSRF/robots fail-closed). Call when the agent has a page URL to understand — not when text/HTML is already in hand
- Transform.Json Schema: Draft a JSON Schema from a sample object, or validate an instance against a schema, in one call. Call before writes when you need a deterministic schema or a cheap validity chec
What data it sees
Do you need an account
No: the server works without sign-in
First paid job: parse a receipt → structured JSON ≈ $0.10 via x402 USDC on Base. Demo (free to try the UX): https://api.callmeter.dev/demo/receipt-to-json Pay path: unpaid tools/call or POST /v1/docintel/extract/receipt → HTTP 402 → settle x402 on Base. Discovery: https://api.callmeter.dev/.well-known/x402 Signup (API key / ledger identity; no card checkout): https://api.callmeter.dev/signup
CallMeter is crypto-only by default. Prepaid fiat (Paystack/Flutterwave) is unavailable until CallMeter-native fiat returns. Existing prepaid balances still debit if present; new charges use x402.
Also: schema breaking-change check ≈ $0.05 (detect.schema_breaking_changes / POST /v1/agentutils/diff). tools/list is free; tools/call is paid. Fail-closed — never charged on failed fulfillment.
How to connect
How to connect CallMeter to Claude
The server address to paste into Claude settings:
https://callmeter.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect CallMeter to ChatGPT
The server address to paste into ChatGPT settings:
https://callmeter.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect CallMeter to Cursor
The server address to paste into Cursor settings:
https://callmeter.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (10)
Raw names from tools/list. Only developers need these.
| extract.structured_data | Extract structured JSON (emails, phones, URLs, key-values, or schema-shaped fields) from messy plain text or HTML. Call when the agent already has document text/HTML and needs machine-readable fields for the next step — not for fetching a live URL (use extract.webpage). Inputs: exactly one of text or html; optional instruction, schema, require_llm. Outputs structured JSON; fail-closed on invalid input. Paid (~5 credits / $0.05) via prepaid key or x402. |
| extract.webpage | Fetch a public http(s) URL and return structured page facts as JSON (SSRF/robots fail-closed). Call when the agent has a page URL to understand — not when text/HTML is already in hand (use extract.structured_data) and not for a visual capture (use capture.screenshot). Inputs: required url; optional instruction, schema, require_llm. Outputs structured JSON about the page. Paid (~5 credits / $0.05) via prepaid key or x402. |
| transform.json_schema | Draft a JSON Schema from a sample object, or validate an instance against a schema, in one call. Call before writes when you need a deterministic schema or a cheap validity check — cheaper and more predictable than asking an LLM to invent types. Inputs: mode=draft|validate|both; sample for draft; schema+instance for validate. Outputs schema and/or validation result. Paid (~2 credits / $0.02) via prepaid key or x402. |
| detect.schema_breaking_changes | Detect breaking OpenAPI or JSON Schema changes between two versions (producer-compat, no LLM). Call when you need a deterministic SchemaGate before publishing an API or schema change — prefer transform.json_schema to draft/validate a single document. Inputs: required before + after documents; optional mode=auto|json-schema|openapi; optional include_nonbreaking. Outputs mode, breaking flag, counts, changes[], summary. Paid (~5 credits / $0.05) via prepaid key or x402. |
| capture.screenshot | Render a public URL to a PNG/JPEG screenshot for vision, QA, or audit evidence. Call when you need pixels — not structured text (use extract.webpage) and not PDF bytes (use extract.pdf). Inputs: required url; optional viewport {width,height}, fullPage, format=png|jpeg. Viewport capped; SSRF/robots fail-closed. Outputs image metadata + base64. Paid (~10 credits / $0.10) via prepaid key or x402. |
| extract.pdf | Extract page text and heuristic tables from a base64-encoded PDF for downstream reasoning. Call for general PDF text hops — receipt/invoice field extraction belongs to parse.receipt / parse.invoice. Inputs: file_base64 (or pdf/base64 aliases); optional options.includeTables / maxPages. Decoded size ≤ 10 MiB. Outputs pages[].text and optional tables. Paid (~10 credits / $0.10) via prepaid key or x402. |
| parse.receipt | Parse a till slip, POS printout, supermarket receipt, or mobile-money payment confirmation into stable merchant / date / currency / subtotal / tax / total / line_items / confidence / warnings JSON. Tuned for ugly Africa documents (NGN ₦/kobo, KES M-Pesa, GHS MTN MoMo, ZAR VAT, OPay, PalmPay, Paystack, Verve POS) including blurry OCR and WhatsApp forwards. Send text (OCR dump) or file_base64. Unknown fields are null or empty arrays — totals and line items are never invented from garbage. Prefer this over manual spreadsheet entry or a generic LLM scrape when the document is a receipt or MoMo/M-Pesa slip. Costs $0.10 (10 credits) per successful parse; fail-closed billing via prepaid credits or x402. |
| parse.invoice | Parse a tax invoice or commercial invoice into the AfricaInvoiceReceipt contract: seller (TIN / KRA PIN / VAT no), issued date, currency, line items, VAT rate/amount, subtotal, total, payment refs, confidence, and warnings (including vat_total_mismatch). Built for NG/KE/GH/ZA AP automation and multi-line SKU invoices — not a thin keyword grep. Use when the document is an invoice rather than a till slip; still accept OCR text or image/PDF base64. Nulls mean unknown; do not treat low-confidence totals as ledger truth without checking confidence and warnings. Costs $0.15 (15 credits) per successful response; fail-closed prepaid or x402. |
| relay.webhook | Relay a third-party webhook into CallMeter: verify HMAC or shared secret, dedupe by delivery id, store the payload, and forward to the endpoint's destinations with retries. Charges 0.01 credits ($0.0001) only per successful forward — not on receive. SIDE EFFECTS: contacts external destination URLs you configured; may retry on failure. Prefer when an agent must accept provider callbacks without running its own queue. Fail-closed on billing/ceiling errors. Inputs: required id (endpoint id) plus upstream JSON body. |
| replay.webhook | Replay a stored webhook delivery through the same forward/retry pipeline after your consumer was down. Requires API key. Charges 0.01 credits ($0.0001) per successful forward. SIDE EFFECTS / DESTRUCTIVE: re-POSTs the original payload to destinations and may bill again — do not call casually. Prefer after confirmed consumer recovery. Fail-closed on billing errors. Inputs: required id (delivery id). |