How It Works
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.001
POST/scrape
Web scraping and text extraction
$0.005
POST/pdf-parse
PDF text extraction
$0.01
POST/compress
Token compression for LLMs
$0.005
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. 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.004
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.006
POST/meetings/get
Fetch one meeting in full, by meeting_id (requires the namespace_token)
$0.002
POST/meetings/list
List the meetings in a namespace with their metadata, newest first. Never returns transcripts (requires the namespace_token)
$0.001
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.001
POST/vault/exists
Check whether a key exists in the vault without returning its ciphertext (requires the namespace_token)
$0.001
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/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/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
Free
Use as an MCP server
// Add to any MCP client (Claude Desktop, Copilot CLI, Cursor)
{
"mcpServers": {
"agentic-endpoints": {
"type": "http",
"url": "https://ai.oliverkiss.com/mcp"
}
}
}
Quick Start
// npm install agentic-endpoints
import { 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.001. Any x402-enabled wallet can pay.
const claim = await fetch("https://ai.oliverkiss.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.
await fetch("https://ai.oliverkiss.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" }
})
});