{"service":"AgentKeep","name":"AgentKeep","description":"Wallet-scoped agent OS primitives over x402: memory, fetch, budget receipts, trust probes, and owner-bound notify. No signup — pay per call in USDC on Algorand Mainnet via GoPlausible. Challenge tag: x402-global-challenge.","protocol":"x402","facilitator":"https://facilitator.goplausible.xyz","tag":"x402-global-challenge","network":"algorand-mainnet","network_caip2":"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=","asset":"USDC","asa_id":"31566704","payTo":"2VIU2N25S2TRAJ54ZTUY5CSFADU6Y5KEMKAWTRWR2ODNTPULNGHBKWEPTQ","base_url":"https://agent-keep-3jimn6j2va-ew.a.run.app","docs":{"llms_txt":"https://agent-keep-3jimn6j2va-ew.a.run.app/llms.txt","agents_md":"https://agent-keep-3jimn6j2va-ew.a.run.app/agents.md","agent_card":"https://agent-keep-3jimn6j2va-ew.a.run.app/.well-known/agent-card.json","x402":"https://agent-keep-3jimn6j2va-ew.a.run.app/.well-known/x402","health":"https://agent-keep-3jimn6j2va-ew.a.run.app/health"},"how_to_pay":{"steps":["Call a paid route without payment → HTTP 402 + PAYMENT-REQUIRED (base64 JSON).","Pay the advertised requirement in USDC on Algorand Mainnet (ASA 31566704) via an x402 client; GoPlausible is the facilitator (gasless for buyer fees).","Retry the same request with PAYMENT-SIGNATURE; on success read X-AgentKeep-Session (15m TTL) for free Memory/Budget GETs.","Branch on error.code from the error catalog; never invent codes."],"challenge_tag":"x402-global-challenge","session_header":"X-AgentKeep-Session","idempotency_header":"Idempotency-Key"},"resources":[{"url":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/memory/:key","method":"PUT","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.","network":"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=","asset":"31566704","amount":"1000","payTo":"2VIU2N25S2TRAJ54ZTUY5CSFADU6Y5KEMKAWTRWR2ODNTPULNGHBKWEPTQ","extra":{"tag":"x402-global-challenge","route":"PUT /v1/memory/:key"}},{"url":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/fetch","method":"POST","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.","network":"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=","asset":"31566704","amount":"10000","payTo":"2VIU2N25S2TRAJ54ZTUY5CSFADU6Y5KEMKAWTRWR2ODNTPULNGHBKWEPTQ","extra":{"tag":"x402-global-challenge","route":"POST /v1/fetch"}},{"url":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/budget/receipts","method":"GET","description":"Export recent ledger rows (settled|credited|failed) for the paying wallet — spend audit for agents.","network":"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=","asset":"31566704","amount":"2000","payTo":"2VIU2N25S2TRAJ54ZTUY5CSFADU6Y5KEMKAWTRWR2ODNTPULNGHBKWEPTQ","extra":{"tag":"x402-global-challenge","route":"GET /v1/budget/receipts"}},{"url":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/trust","method":"GET","description":"Probe a public URL for reachability and basic x402 Payment-Required signals (≤3s). SSRF-guarded.","network":"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=","asset":"31566704","amount":"2000","payTo":"2VIU2N25S2TRAJ54ZTUY5CSFADU6Y5KEMKAWTRWR2ODNTPULNGHBKWEPTQ","extra":{"tag":"x402-global-challenge","route":"GET /v1/trust"}},{"url":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/notify","method":"POST","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.","network":"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=","asset":"31566704","amount":"20000","payTo":"2VIU2N25S2TRAJ54ZTUY5CSFADU6Y5KEMKAWTRWR2ODNTPULNGHBKWEPTQ","extra":{"tag":"x402-global-challenge","route":"POST /v1/notify"}}],"routes":[{"route":"PUT /v1/memory/:key","method":"PUT","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.","price_usdc_minor":1000,"url_template":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/memory/:key"},{"route":"POST /v1/fetch","method":"POST","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.","price_usdc_minor":10000,"url_template":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/fetch"},{"route":"GET /v1/budget/receipts","method":"GET","description":"Export recent ledger rows (settled|credited|failed) for the paying wallet — spend audit for agents.","price_usdc_minor":2000,"url_template":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/budget/receipts"},{"route":"GET /v1/trust","method":"GET","description":"Probe a public URL for reachability and basic x402 Payment-Required signals (≤3s). SSRF-guarded.","price_usdc_minor":2000,"url_template":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/trust"},{"route":"POST /v1/notify","method":"POST","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.","price_usdc_minor":20000,"url_template":"https://agent-keep-3jimn6j2va-ew.a.run.app/v1/notify"}]}