{"capabilities":{"multiTurn":false,"pushNotifications":false,"stateTransitionHistory":false,"streaming":false},"defaultInputModes":["application/json"],"defaultOutputModes":["application/json"],"description":"File transfer for humans and the things replacing them. Small files get free cloud delivery — a durable share link with no receiver needed (fire-and-forget). Larger files transfer directly between machines over WebRTC with no size limit. No accounts.","documentationUrl":"https://perkoon.com/automate","extensions":{"clientCapabilities":{"description":"Optional. Include in your DataPart to get an optimized response for your runtime.","example":{"nodeJs":true,"shellAccess":true}}},"name":"Perkoon — Agent Data Layer","preferredTransport":"JSONRPC","protocolVersion":"0.3.0","provider":{"organization":"Perkoon","url":"https://perkoon.com"},"rateLimits":{"a2a":"Every JSON-RPC POST to /a2a (send-files, receive-files, session-status) counts against the 10/min create budget; the separate join/status budgets apply only to the REST /api/v1/sessions paths.","createsPerMinute":10,"joinsPerMinute":30,"onExceeded":"HTTP 429 with Retry-After header (seconds); same value in JSON body as retry_after. Limits key on IP, not agent identity — clients behind a shared egress IP (NAT, CI, cloud gateway) share one budget, so pace batch sends.","scope":"per-ip","statusChecksPerMinute":20,"window":"60s"},"resources":[{"description":"MCP server for coding agents. Run: npx -y @perkoon/mcp (stdio transport). Adds send_file, receive_file, check_session as native tools.","type":"mcp-server","url":"https://www.npmjs.com/package/@perkoon/mcp"},{"description":"npx -y perkoon@latest — zero-install headless transfers (free cloud delivery for small files, P2P for the rest)","type":"cli-tool","url":"https://www.npmjs.com/package/perkoon"},{"description":"Browser-context session-creation entry. POST form fields: session[source]=agent_browser (or agent_skill for discovery attribution) and session[tos_accepted]=true. Returns 302 to / with TOS auto-accepted. REQUIRES CSRF token + session cookie (Phoenix browser pipeline) — works seamlessly from a Playwright browser context. For cookie-less agents (curl, MCP, scripts), use POST /a2a JSON-RPC at the `url` field above instead.","method":"POST","type":"http-entry-point","url":"https://perkoon.com/create"},{"description":"Claude Skill (`skills/perkoon/SKILL.md`) — drop into your project's `skills/` or `.claude/skills/` directory. Frontmatter `name: perkoon` triggers on send/receive intent. Body documents all four entry points (MCP, CLI, A2A, browser) with concrete invocation examples and stable selectors.","type":"claude-skill","url":"https://perkoon.com/skills/perkoon/SKILL.md"},{"description":"Full agent automation guide","type":"documentation","url":"https://perkoon.com/automate"}],"skills":[{"description":"Learn what Perkoon can do without creating a session. Returns capabilities, usage instructions, and next_steps for follow-up actions.","examples":["What can Perkoon do?","How does file transfer work?","Tell me about Perkoon"],"id":"describe","inputModes":["application/json"],"name":"Describe Capabilities","outputModes":["application/json"],"tags":["info","help","capabilities"]},{"description":"Create a transfer session. Returns a browser URL (sender_url) for your user and CLI commands for autonomous agents. If you have shell access: `npx -y perkoon@latest send --session --sender-key --json` (small files sent without --session relay via free cloud delivery and finish immediately; larger files stream P2P). If not: share the sender_url with your user to open in their browser.","examples":["I want to send a file","Create a transfer session","Set up a P2P transfer for report.pdf"],"id":"send-files","inputModes":["application/json"],"name":"Send Files","outputModes":["application/json"],"tags":["file-transfer","p2p","free","webrtc","cli"]},{"description":"Join an existing transfer session to receive files. CLI: `npx -y perkoon@latest receive --json`. Or open the receiver_url in a browser.","examples":["Receive files from session A1B2C3D4E5F6","Join transfer A1B2C3D4E5F6","Download from A1B2C3D4E5F6"],"id":"receive-files","inputModes":["application/json"],"name":"Receive Files","outputModes":["application/json"],"tags":["download","receive","p2p","free"]},{"description":"Check the status of an existing transfer session.","examples":["Check status of session A1B2C3D4E5F6","Is session A1B2C3D4E5F6 still active?"],"id":"session-status","inputModes":["application/json"],"name":"Session Status","outputModes":["application/json"],"tags":["status","check","session"]}],"url":"https://perkoon.com/a2a","version":"1.5.0"}