{"protocol":"okidooki-app","version":"0","name":"Okidooki agent ecosystem (APP v0)","description":"Networks that AI agents can buy from on behalf of a linked user: discover, quote, order, status, cancel; plus network-specific capabilities. One key per network, HMAC-signed requests, user consent through account linking.","docs":"https://okidooki.app/app-v0/","openapi":"https://okidooki.app/app-v0/openapi.yaml","portal":"https://okidooki.app/webapp/developers","sdk":{"javascript":"https://okidooki.app/app-v0/sdk/app-v0.mjs","python":"https://okidooki.app/app-v0/sdk/app_v0.py","conformance":"https://okidooki.app/app-v0/sdk/conformance.mjs"},"auth":{"scheme":"api-key+hmac","headers":["Authorization","X-Timestamp","X-Signature","Idempotency-Key"],"signature":"hex(HMAC-SHA256(key, timestamp + '.' + rawBody))","windowSeconds":300},"networks":[{"id":"okidooki","name":"Okidooki Night","gateway":"https://europe-west1-okidooki-nightlife.cloudfunctions.net/a2aGateway","card":"https://europe-west1-okidooki-nightlife.cloudfunctions.net/a2aGateway/card","capabilities":["discover_venues","discover_events","reserve_table","buy_ticket"],"routes":["discover","quote","order","orders","status","cancel","link/status","link/confirm","link/revoke","connect/start","connect/status"],"settlement":["in_app"],"currencies":["CHF","EUR"],"keyPrefix":["ok_a2a_live_","ok_a2a_test_"],"a2a":{"card":"https://okidooki.app/.well-known/agent.json","rpc":"https://okidooki.app/a2a"},"mcp":"https://okidooki.app/mcp","listedBy":"okidooki","health":{"status":"up","latencyMs":3284,"checkedAt":"2026-10-16T12:31:16.426Z"}},{"id":"nowtrust","name":"NowTrust","gateway":"https://nowtrust.app","card":"https://nowtrust.app/a2a/v0/card","a2aCard":"https://nowtrust.app/.well-known/agent.json","capabilities":["discover_guards","book_guard","sos","mandates"],"routes":["discover","quote","order","orders","status","cancel","link/start","link/status","sos","sos/status","sos/cancel","sandbox/approve"],"settlement":["card_on_file","mandate"],"currencies":["CHF"],"keyPrefix":["nt_live_","nt_test_"],"a2a":{"card":"https://nowtrust.app/.well-known/agent.json","rpc":"https://nowtrust.app/a2a/v0/rpc"},"mcp":"https://nowtrust.app/mcp","listedBy":"okidooki","health":{"status":"up","latencyMs":3030,"checkedAt":"2026-10-16T12:31:19.600Z"}},{"id":"makeitfun","name":"MakeItFun","gateway":"https://europe-west1-make-it-fun-app.cloudfunctions.net/a2aGateway","card":"https://europe-west1-make-it-fun-app.cloudfunctions.net/a2aGateway/card","capabilities":["discover_products","design_preview","order_merch"],"routes":["discover","preview","preview/status","designs","quote","order","orders","status","cancel","link/start","link/status","link/revoke","sandbox/pay"],"settlement":["stripe_checkout_link"],"currencies":["CHF"],"keyPrefix":["mif_a2a_live_","mif_a2a_test_"],"a2a":{"card":"https://makeitfun.shop/.well-known/agent.json","rpc":"https://makeitfun.shop/a2a"},"mcp":"https://makeitfun.shop/mcp","listedBy":"okidooki","health":{"status":"up","latencyMs":2518,"checkedAt":"2026-10-16T12:31:22.527Z"}}],"sandbox":{"howTo":"In the portal every integration gets TEST keys at once and can create linked sandbox users per network; test keys act only on those users. MakeItFun test orders get a sandbox payment link that POST sandbox/pay settles; NowTrust sandbox accounts have no card, so an order stays needs_user_confirmation until POST sandbox/approve {orderId} settles it (no charge, no booking, no guard)."},"pricing":{"description":"Test keys and sandbox traffic are free. Live traffic per integration and month: 2,000 calls free, then CHF 0.01 per call, plus CHF 0.50 per paid order placed through the agent; invoices below CHF 5 are not issued. Invoiced on the 1st by Stripe (14 days). Rate limits per key are set in the portal (test up to 120/min, live up to 600/min).","currency":"CHF","freeCallsPerMonth":2000,"pricePerCallCents":1,"paidOrderFeeCents":50,"minimumInvoiceCents":500},"status":"https://okidooki.app/app-v0/status/","updatedAt":"2026-10-10","facades":{"googleA2A":"Every network serves a Google A2A agent card at /.well-known/agent.json and JSON-RPC (message/send with a data part {route, body}, tasks/get) at /a2a.","mcp":"Every network is an MCP server (Streamable HTTP, JSON responses) at /mcp: tools map 1:1 to the routes; auth = Bearer key."},"connect":{"description":"Universal consent: POST connect/start on the Okidooki gateway (signed with your Okidooki key) returns a url; the user signs in with the Okidooki account, sets one mandate (perOrderMax, monthlyMax in centimes, capabilities, validUntil, autoApprove) and approves the networks at once. Networks that cannot be matched automatically answer needs_code (a code for that app). link/status on every network returns the mandate; order and sos fail with mandate_scope outside it. Users manage and revoke at https://okidooki.app/webapp/connect (Profile, Connected agents).","start":"https://europe-west1-okidooki-nightlife.cloudfunctions.net/a2aGateway/a2a/v0/connect/start","status":"https://europe-west1-okidooki-nightlife.cloudfunctions.net/a2aGateway/a2a/v0/connect/status","page":"https://okidooki.app/webapp/connect/{connectId}","mandateCapabilities":{"okidooki":["reserve_table","buy_ticket"],"nowtrust":["book_guard","sos_dispatch"],"makeitfun":["order_merch"]}},"webhooks":{"description":"Set a https URL and the events you want in the portal (Agents > Webhooks). Events: ping, order.status (every network), sos.status (NowTrust), connect.approved, link.revoked. Delivery: POST JSON {id, type, network, createdAt, data}; headers X-APPV0-Event, X-APPV0-Delivery, X-APPV0-Timestamp, X-APPV0-Signature (t=<unix>,v1=hex(HMAC-SHA256(secret, t + '.' + rawBody))); retries 1, 5, 15, 60, 240 minutes after a non-2xx; verify with the SDK (verifyWebhook / verify_webhook).","events":["ping","order.status","sos.status","connect.approved","link.revoked"],"echo":"https://europe-west1-okidooki-nightlife.cloudfunctions.net/webhookEcho/<your-token-16-chars> (POST to receive, GET to read; for tests)"},"listing":{"howTo":"Any company can list its own seller network: implement the APP v0 card and routes (docs), then register the gateway in the portal (Agents > Your networks). Listing passes the automated checks; health is probed hourly.","page":"https://okidooki.app/app-v0/networks/"},"generatedAt":"2026-10-16T13:20:55.171Z"}