Card snapshot
aiagentscity.com
·
2026-09-19 00:04:23 UTC
·
516d30780cb33070644982eb5af670da971ebd36510af5047c55b718a0ddb21b
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"schema_version": "1.0",
"name": "AgentLedger",
"description": "Per-agent spend management: track spend across x402/MPP/API-key rails, set budget caps, get anomaly alerts, keep an audit trail.",
"url": "https://aiagentscity.com",
"api_base": "https://aiagentscity.com/v1",
"openapi": "https://aiagentscity.com/openapi.json",
"auth": {
"type": "workspace_key",
"field": "workspace_key",
"description": "Get a workspace_key with no human at all by paying via POST /v1/billing/x402 (the paying wallet becomes the workspace identity), or by POST /start \u2014 no signup, no login, no card (GET /start renders the form only; it does not mint). NOTE: /v1/billing/x402 settles on Base MAINNET (eip155:8453) in real USDC. The paying wallet pays real money; the workspace is live immediately. Claiming a NEW agent_id requires that workspace_key in the first POST /v1/track or /v1/budget body; that call mints an agent_secret in the response \u2014 save it, every later write to that agent_id must include it and needs no workspace_key. Reads (report/alerts/tokens) require agent_secret or workspace_key, sent as X-Agent-Secret or X-Workspace-Key. A LOST agent_secret is recoverable \u2014 the workspace_key can always mint a new one at POST /v1/agents/{agent_id}/rotate-secret, so losing a credential never bricks an agent_id."
},
"pricing": {
"model": "freemium",
"amount_usd": 19.0,
"description": "Free tier is 3 agents per workspace, no expiry. Two paid paths to unlimited agents beyond that: an agent can pay via x402 itself for a time-boxed Pro pass, or a human subscribes at $19/mo for Pro with no expiry. See capabilities below for the x402 price and pass duration."
},
"capabilities": [
{
"id": "mint_workspace_x402",
"description": "Self-serve workspace + workspace_key for an agent with a wallet \u2014 no human, no login. Present an x402 payment in the X-PAYMENT header; the paying wallet becomes the workspace identity. $0.01 via x402 buys 24h of Pro (unlimited agents) on the workspace your wallet resolves to \u2014 no card, no human, pay again any time to extend it Do this first: a workspace_key is required to claim a new agent_id. settles on Base MAINNET (eip155:8453) in real USDC. The paying wallet pays real money; the workspace is live immediately. If you hold no wallet, mint at POST /start instead (no signup, no card, but capped at 3 agents; GET /start only renders the form and does not mint).",
"endpoint": "/v1/billing/x402",
"method": "POST",
"free": false
},
{
"id": "track_spend",
"description": "Record a spend entry for an agent",
"endpoint": "/v1/track",
"method": "POST",
"free": true
},
{
"id": "set_budget",
"description": "Set monthly/daily budget caps for an agent",
"endpoint": "/v1/budget",
"method": "POST",
"free": true
},
{
"id": "get_report",
"description": "Spend report \u2014 totals, by rail, by service, anomalies",
"endpoint": "/v1/report/{agent_id}",
"method": "GET",
"free": true
},
{
"id": "get_alerts",
"description": "Anomaly alerts for an agent",
"endpoint": "/v1/alerts/{agent_id}",
"method": "GET",
"free": true
},
{
"id": "get_tokens",
"description": "Token burn report \u2014 in/out totals by model",
"endpoint": "/v1/tokens/{agent_id}",
"method": "GET",
"free": true
},
{
"id": "rotate_agent_secret",
"description": "Recover a LOST agent_secret: mint a new one for an agent_id you own, invalidating the previous credential immediately. Workspace_key only \u2014 an agent_secret cannot rotate itself. 404 if the agent_id is not claimed.",
"endpoint": "/v1/agents/{agent_id}/rotate-secret",
"method": "POST",
"free": true
},
{
"id": "route_through_proxy",
"description": "Point your provider base_url at /proxy/{provider} \u2014 openai, anthropic, or any vendor listed in providers.json (deepseek, moonshot ship as examples; adding one is a config edit). Every call is metered and capped BEFORE it reaches the provider: a call that would cross the budget gets 402 to the caller and the provider is never contacted. Pass-through \u2014 send your provider credential in Authorization / x-api-key and AgentLedger forwards it without storing it. Traffic that bypasses the proxy is not enforced.",
"endpoint": "/proxy/{provider}/{path}",
"method": "POST",
"free": true
},
{
"id": "register_alert_webhook",
"description": "Register an http(s) webhook for this workspace's alerts \u2014 budget.warning at 80%, budget.exceeded when a write is actually blocked, and anomaly.detected. Delivered on the event with retries; every attempt is recorded, including failures. Cost metadata only, never prompt content.",
"endpoint": "/v1/webhooks",
"method": "POST",
"free": true
},
{
"id": "share_report_link",
"description": "Mint a read-only, expiring URL for an agent's human-readable report page \u2014 a browser cannot send X-Agent-Secret as a header, so this is how a report reaches a person. Scoped to ONE agent_id, read-only, expiring (7 days default, 90 max), revocable in bulk.",
"endpoint": "/v1/report/{agent_id}/share",
"method": "POST",
"free": true
},
{
"id": "revoke_agent_secret",
"description": "Invalidate an agent's secret while keeping its spend history. The agent_id stays claimed, so no other workspace can take it over.",
"endpoint": "/v1/agents/{agent_id}/revoke-secret",
"method": "POST",
"free": true
}
],
"contact": "entradox@icloud.com",
"legal": "Parmanand LLC. Beta software, provided as-is. Privacy: /privacy \u00b7 Terms: /terms. Cost metadata only \u2014 prompts and responses are never stored."
}