Pay-per-call micro-utilities for autonomous AI agents. No API keys. No subscriptions. Just USDC micropayments.
Can AI agents reach your website?
Many sites look fine in a browser but turn away curl, Python and AI crawlers at the CDN. The reachability report checks up to 20 pages as nine real clients and tells you exactly what to fix. One-time fee of $69.
Agent calls endpoint→402 Payment Required→Agent pays USDC on Base→Response + signed receipt
Paid Endpoints
POST/once-key
Atomic idempotency witness — claim an action exactly once, record its result, and replay that result to every later caller
$0.010
POST/scrape
Web scraping and text extraction
$0.010
POST/pdf-parse
PDF text extraction
$0.020
POST/compress
Token compression for LLMs
$0.010
POST/vault/store
Store an encrypted item in the vault. The first store claims the namespace and returns a one-time namespace_token.
$0.02
POST/vault/delete
Delete an item from the vault (requires the namespace_token)
$0.005
POST/credits/buy
Buy $6.00 of prepaid credit for $5.00 (20% bonus). Returns a credit token; send it as X-Credit-Token on any paid endpoint to be debited at list price with no per-call payment signature.
$5.00
POST/credits/buy-25
Buy $32.50 of prepaid credit for $25.00 (30% bonus). Returns a credit token; send it as X-Credit-Token on any paid endpoint to be debited at list price with no per-call payment signature.
$25.00
POST/meetings/import
Import a meeting transcript. Accepts a raw WebVTT or SRT export straight from Zoom, Teams, Meet or a notetaker -- timestamps and cue numbering are stripped so search matches phrases the export split across cues. visibility "private" stores ciphertext this service cannot read; "queryable" stores plaintext and indexes it for search. The first import claims the namespace and returns a one-time namespace_token.
$0.010
POST/meetings/search
Full-text search across your queryable meetings. Returns ranked excerpts, and reports how many meetings were private and therefore not searched.
$0.010
POST/x402/verify
Before paying a stranger's x402 endpoint, read its live payment challenge and compare it against every previous observation. Flags a changed receiving address, network or asset as critical drift. Reports what the endpoint declares; it does not certify the operator.
$0.010
POST/reach
Can agents reach this URL? Sends one GET as each of nine common clients (curl, node, Python urllib, Python requests, libwww-perl, a browser, GPTBot, ClaudeBot, Googlebot) and reports which are refused and why, plus robots.txt AI-crawler blocks, /llms.txt and the http-to-https redirect. Read-only.
$0.010
POST/reach/report
Full reachability report for one site, up to 20 pages: every page checked from nine common clients, the likely cause of each refusal (Cloudflare 1010, firewall rule, bot challenge, origin server, AI-crawler block, POST-dropping redirect, missing llms.txt) with the exact fix and a curl that reproduces it, a prioritised fix list, a private report page, and 3 free re-scans within 30 days compared before and after.
$69.00
POST/meetings/summarize
Ask a question in plain language and get an answer grounded in your own meetings, with a citation to the meeting each claim came from. Retrieves the relevant transcripts and reasons over them. When nothing matches, no answer is generated rather than one being invented.
$0.050
POST/meetings/get
Fetch one meeting in full, by meeting_id (requires the namespace_token)
$0.005
POST/meetings/list
List the meetings in a namespace with their metadata, newest first. Never returns transcripts (requires the namespace_token)
$0.005
POST/meetings/delete
Delete a meeting and remove it from the search index (requires the namespace_token)
$0.001
POST/vault/list
List the keys held in a vault namespace with their metadata, without returning any ciphertext (requires the namespace_token)
$0.005
POST/vault/exists
Check whether a key exists in the vault without returning its ciphertext (requires the namespace_token)
$0.005
POST/vault/retrieve
Retrieve an encrypted item from the vault (requires the namespace_token issued at claim time)
$0.02
Free Endpoints
Lifecycle calls are free because the paid claim already covers them, and telemetry is free because a service asking to be trusted should not charge you to check whether it works.
POST/once-key/complete
Record the outcome of a claimed action_key
Free
POST/vault/rotate-token
Replace a vault namespace token
Free
POST/once-key/release
Surrender a claim whose work failed
Free
POST/credits/trial
Get a free evaluation credit, no account required
Free
POST/credits/balance
Check a prepaid credit balance
Free
GET/status
Uptime, error rate and latency, measured from real traffic
Free
GET/stats
Demand funnel: requests challenged, paid and served free
Free
GET/revenue
USDC received, read directly from Base — not from our logs
Free
GET/health
Health check
Free
GET/openapi.json
OpenAPI 3.1 description of every route
Free
GET/llms.txt
Plain-language description for a model given only this URL
Free
POST/mcp
Remote MCP server (Streamable HTTP). Listing tools is free; calling one costs that tool's price
// npm install agentic-endpointsimport { AgenticEndpoints } from"agentic-endpoints";
// Run a side effect exactly once, even if your agent is running twice.// Claims the key, records the result, releases it if the work throws.const { outcome, result } = await client.exactlyOnce(
{ namespace: "billing", actionKey: `charge:${order.id}`, leaseTtl: 300 },
async () => stripe.charges.create({ amount: order.total }),
);
// outcome: "performed" — you did the work// outcome: "replayed" — someone else already did it; result is theirs// throws HeldError — claimed but never completed; no result exists
Or over plain HTTP
// 1. Claim it. Costs $0.010. Any x402-enabled wallet can pay.const claim = awaitfetch("https://agentic-endpoints.com/once-key", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
namespace: "billing",
action_key: "charge:order-12345",
lease_ttl: 300
})
}).then(r => r.json());
// "claimed" → you won the race, do the work// "duplicate" → already done; claim.result holds the outcome// "held" → claimed but never finished. No result. Do not do the work// "in_progress" → someone else holds a live lease, wait and retry// "conflict" → same key, different payload. Never retry this.// 2. Record what happened. Free — the claim paid for this.awaitfetch("https://agentic-endpoints.com/once-key/complete", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
namespace: "billing",
action_key: "charge:order-12345",
namespace_token: claim.namespace_token,
result: { charge_id: "ch_abc123" }
})
});