{"name":"AgentKeep","description":"Wallet-scoped OS primitives for AI agents — memory, fetch, budget receipts, trust, and owner-bound notify. No signup, no API keys. Pay per call with x402 (USDC on Algorand Mainnet via GoPlausible).","url":"https://agent-keep-684642514120.europe-west1.run.app","version":"0.1.0","protocolVersion":"0.2.9","preferredTransport":"http","capabilities":{"streaming":false},"defaultInputModes":["application/json","text"],"defaultOutputModes":["application/json"],"skills":[{"id":"PUT__v1_memory__key","name":"PUT /v1/memory/:key","description":"Store a wallet-scoped key/value (≤64KiB JSON/text). Returns key metadata plus an x402 payment receipt. Tenant = paying Algorand wallet; other wallets get 404.","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["PUT https://agent-keep-684642514120.europe-west1.run.app/v1/memory/:key"]},{"id":"POST__v1_fetch","name":"POST /v1/fetch","description":"Server-side HTTPS fetch of a public URL with shared SSRF denylist (no private/link-local). Returns status, content-type, and a truncated body excerpt plus payment receipt.","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["POST https://agent-keep-684642514120.europe-west1.run.app/v1/fetch"]},{"id":"DELETE__v1_memory__key","name":"DELETE /v1/memory/:key","description":"Delete a wallet-scoped memory key. Returns deleted=true plus payment receipt. Cross-wallet keys are not found (404).","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["DELETE https://agent-keep-684642514120.europe-west1.run.app/v1/memory/:key"]},{"id":"GET__v1_memory","name":"GET /v1/memory","description":"List memory keys (no values) for the paying wallet. Paginated metadata only.","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["GET https://agent-keep-684642514120.europe-west1.run.app/v1/memory"]},{"id":"POST__v1_artifacts","name":"POST /v1/artifacts","description":"Upload bytes (≤10MiB; no HTML/JS). Returns a public HTTPS URL + sha256 and payment receipt. Stored on R2 when configured.","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["POST https://agent-keep-684642514120.europe-west1.run.app/v1/artifacts"]},{"id":"GET__v1_budget_receipts","name":"GET /v1/budget/receipts","description":"Export recent ledger rows (settled|credited|failed) for the paying wallet — spend audit for agents.","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["GET https://agent-keep-684642514120.europe-west1.run.app/v1/budget/receipts"]},{"id":"GET__v1_trust","name":"GET /v1/trust","description":"Probe a public URL for reachability and basic x402 Payment-Required signals (≤3s). SSRF-guarded.","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["GET https://agent-keep-684642514120.europe-west1.run.app/v1/trust"]},{"id":"POST__v1_notify","name":"POST /v1/notify","description":"Create an owner-bound human approval/Q&A ticket (email/Telegram already bound by owner). Returns pending ticket id — poll GET /v1/notify/{id}; never blocks on max_wait_seconds.","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["POST https://agent-keep-684642514120.europe-west1.run.app/v1/notify"]},{"id":"GET__v1_notify__id","name":"GET /v1/notify/:id","description":"Poll an owner-bound notify ticket until terminal status (approved|denied|answered|timeout|cancelled).","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["GET https://agent-keep-684642514120.europe-west1.run.app/v1/notify/:id"]},{"id":"POST__v1_owner_bind_email","name":"POST /v1/owner/bind/email","description":"Bind an owner email for notify tickets. Body: { email }. Sends Approve/Deny links to this address on later POST /v1/notify.","tags":["x402","algorand","mainnet","x402-global-challenge"],"examples":["POST https://agent-keep-684642514120.europe-west1.run.app/v1/owner/bind/email"]}],"payments":{"protocol":"x402","network":"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=","asset":"31566704","facilitator":"https://facilitator.goplausible.xyz","tag":"x402-global-challenge"}}