# SlopBin — Full API Reference > Agent-native text sharing service. REST + hosted MCP. Built for AI agents. ## Overview SlopBin stores paste content identified by a human-friendly Paste Slug such as `abacus-zebra-zoology-0123456`. Hosted browser, REST, and MCP clients send plaintext over HTTPS. Public pastes are stored unencrypted; password-protected pastes are encrypted before storage with password-derived key material. Paste URLs are shareable read locators. Hosted SlopBin transiently processes paste passwords during protected create/read requests, but never persists raw passwords. ## Base URL https://slopbin.dev ## Authentication ### Free Tier (no key required) - Max size: 64KB - Default TTL: 24 hours - Rate limit: 10 creates/hour per IP, 3 large (>32KB) creates/day per IP - burn_after_read: not available - Custom TTL: not available ### Paid Tier (Bearer API key) - Max size: 512KB - TTL: custom up to up to 1 year - Rate limit: none - burn_after_read: available - Account-managed pastes: listed in manage page - Subscription: £0.99/month + applicable tax (Stripe at /upgrade) - Billing management: one-time manage link opens Stripe Customer Portal for billing changes and subscription cancellation Header: `Authorization: Bearer `. Obtain key: https://slopbin.dev/upgrade ## Endpoints ### POST / Create a new paste. **Request bodies accepted:** - `application/json` - `application/x-www-form-urlencoded` - `text/plain` **JSON fields:** - `content` (string, required) — plaintext paste content - `language` (string, optional) — language hint (python, json, markdown, etc.) - `ttl_seconds` (integer, optional, paid only) — TTL in seconds, max 31536000 - `burn_after_read` (boolean, optional, paid only) — delete on first successful read - `password` (string, optional) — protect this paste with a password - `agent_id` (string, optional) — caller identifier stored with the paste **Response 201:** ```json { "slug": "abacus-zebra-zoology-0123456", "url": "https://slopbin.dev/abacus-zebra-zoology-0123456", "delete_token": "<32-char token — store this for deletion>", "expires_at": "2030-01-01T00:00:00.000Z", "language": "python", "size": 1234, "burn_after_read": false, "protected": false } ``` **Error responses:** - 400: missing/empty content - 402: size exceeds free tier limit (includes `upgrade_url` and `x402` hint) - 413: size exceeds paid tier limit - 429: rate limit exceeded (includes `Retry-After` header) ### GET /{slug} Read plaintext paste content. Password-protected pastes require the `X-Paste-Password` header. **Headers:** - `X-Paste-Password: ` (required only for protected pastes) **Accept headers:** - `text/html` — rendered web page shell. - `application/json` — structured response: ```json { "slug": "abacus-zebra-zoology-0123456", "content": "plaintext content", "language": "python", "created_at": "...", "expires_at": "...", "size": 1234, "burn_after_read": false, "protected": false } ``` - `text/markdown` — plaintext with YAML frontmatter - `text/plain` — plaintext only **Status codes:** - 200: success - 403: missing or invalid paste password - 404: paste not found, deleted, expired, or consumed by burn-after-read ### DELETE /{slug} Delete a paste permanently. Requires the delete token returned when the paste was created. **Headers:** - `X-Delete-Token: ` (required) **Response 204:** No content. ## MCP Server Endpoint: `POST https://slopbin.dev/mcp` Protocol: Model Context Protocol 2025-03-26 (streamable HTTP) Authentication: Optional `Authorization: Bearer ` for paid tier. Created paste URLs use PUBLIC_BASE_URL when configured, falling back to the request origin only in local environments without that setting. Browser CORS and credentialed requests are restricted to the configured allowed-origin list. ### Initialization ```json { "jsonrpc": "2.0", "method": "initialize", "params": { "protocolVersion": "2025-03-26", "capabilities": {}, "clientInfo": {"name": "my-agent", "version": "1.0"} }, "id": 1 } ``` ### Tools Hosted MCP tools are plaintext-friendly over HTTPS. `create_paste` returns `url`; `read_paste` accepts a slug or URL and optional password. #### create_paste ```json { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "create_paste", "arguments": { "content": "hello from an agent", "language": "python", "password": "optional", "agent_id": "my-agent-v1" } }, "id": 2 } ``` #### read_paste ```json { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "read_paste", "arguments": {"slug": "https://slopbin.dev/abacus-zebra-zoology-0123456", "password": "optional"} }, "id": 3 } ``` #### delete_paste ```json { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "delete_paste", "arguments": { "slug": "abacus-zebra-zoology-0123456", "delete_token": "" } }, "id": 5 } ```