{"version":1,"resources":["https://stabledesign.vercel.app/api/folders/move","https://stabledesign.vercel.app/api/designs/create","https://stabledesign.vercel.app/api/designs/get","https://stabledesign.vercel.app/api/designs/list","https://stabledesign.vercel.app/api/designs/pages","https://stabledesign.vercel.app/api/designs/export-formats","https://stabledesign.vercel.app/api/designs/export","https://stabledesign.vercel.app/api/assets/upload","https://stabledesign.vercel.app/api/assets/get","https://stabledesign.vercel.app/api/assets/update","https://stabledesign.vercel.app/api/assets/delete","https://stabledesign.vercel.app/api/brand-templates/list","https://stabledesign.vercel.app/api/brand-templates/get","https://stabledesign.vercel.app/api/brand-templates/dataset","https://stabledesign.vercel.app/api/autofill/create","https://stabledesign.vercel.app/api/autofill/status","https://stabledesign.vercel.app/api/imports/create","https://stabledesign.vercel.app/api/imports/status","https://stabledesign.vercel.app/api/resize/create","https://stabledesign.vercel.app/api/resize/status","https://stabledesign.vercel.app/api/folders/create","https://stabledesign.vercel.app/api/folders/get","https://stabledesign.vercel.app/api/folders/update","https://stabledesign.vercel.app/api/folders/delete","https://stabledesign.vercel.app/api/folders/items","https://stabledesign.vercel.app/api/comments/create","https://stabledesign.vercel.app/api/comments/get","https://stabledesign.vercel.app/api/comments/reply","https://stabledesign.vercel.app/api/comments/list-replies"],"mppResources":["https://stabledesign.vercel.app/api/folders/move","https://stabledesign.vercel.app/api/designs/create","https://stabledesign.vercel.app/api/designs/get","https://stabledesign.vercel.app/api/designs/list","https://stabledesign.vercel.app/api/designs/pages","https://stabledesign.vercel.app/api/designs/export-formats","https://stabledesign.vercel.app/api/designs/export","https://stabledesign.vercel.app/api/assets/upload","https://stabledesign.vercel.app/api/assets/get","https://stabledesign.vercel.app/api/assets/update","https://stabledesign.vercel.app/api/assets/delete","https://stabledesign.vercel.app/api/brand-templates/list","https://stabledesign.vercel.app/api/brand-templates/get","https://stabledesign.vercel.app/api/brand-templates/dataset","https://stabledesign.vercel.app/api/autofill/create","https://stabledesign.vercel.app/api/autofill/status","https://stabledesign.vercel.app/api/imports/create","https://stabledesign.vercel.app/api/imports/status","https://stabledesign.vercel.app/api/resize/create","https://stabledesign.vercel.app/api/resize/status","https://stabledesign.vercel.app/api/folders/create","https://stabledesign.vercel.app/api/folders/get","https://stabledesign.vercel.app/api/folders/update","https://stabledesign.vercel.app/api/folders/delete","https://stabledesign.vercel.app/api/folders/items","https://stabledesign.vercel.app/api/comments/create","https://stabledesign.vercel.app/api/comments/get","https://stabledesign.vercel.app/api/comments/reply","https://stabledesign.vercel.app/api/comments/list-replies"],"description":"Pay-per-request access to the full Canva Connect API — designs, assets, brand templates, folders, comments, and more. No API keys, just pay and go.","instructions":"# StableDesign API\n\n> Full Canva Connect API behind micropayments — designs, assets, brand templates, folders, comments, and more.\n\n## Base URL\n\nhttps://stabledesign.vercel.app\n\n## Payment\n\nThis API accepts both **x402** (USDC on Base) and **MPP** (USDC on Tempo) micropayments.\n\nWhen you call a paid endpoint without payment, you'll receive HTTP 402 with a payment challenge.\nUse an x402-compatible client or MPP-compatible client to handle payment automatically.\n\n### Agent Workflow (Progressive)\n\n1. Discover endpoints: `mcp__agentcash__discover_api_endpoints(\"https://stabledesign.vercel.app\")`\n2. Check schema: `mcp__agentcash__check_endpoint_schema` before first fetch\n3. Execute: `mcp__agentcash__fetch` with payment\n\n## Authentication\n\nAll paid endpoints require a one-time Canva OAuth setup:\n1. Visit /api/oauth/authorize in a browser\n2. Authorize the StableDesign integration\n3. The server stores the token — all subsequent API calls use it automatically\n\n## Endpoints\n\n| Method | Path | Price | Description |\n|--------|------|-------|-------------|\n| GET | /api/health | free | Health check |\n| GET | /api/oauth/authorize | free | Start Canva OAuth flow (browser) |\n| GET | /api/oauth/callback | free | Canva OAuth callback |\n| GET | /api/user | free | Get authenticated Canva user info |\n| POST | /api/designs/create | $0.01 | Create a new Canva design |\n| POST | /api/designs/get | $0.01 | Get design details by ID |\n| POST | /api/designs/list | $0.01 | List user's designs |\n| POST | /api/designs/pages | $0.01 | Get pages of a design |\n| POST | /api/designs/export-formats | $0.01 | Get available export formats |\n| POST | /api/designs/export | $0.02 | Export a design to file |\n| POST | /api/assets/upload | $0.01 | Upload an asset by URL |\n| POST | /api/assets/get | $0.01 | Get asset details |\n| POST | /api/assets/update | $0.01 | Update an asset (rename/re-tag) |\n| POST | /api/assets/delete | $0.01 | Delete an asset |\n| POST | /api/brand-templates/list | $0.01 | List brand templates |\n| POST | /api/brand-templates/get | $0.01 | Get brand template details |\n| POST | /api/brand-templates/dataset | $0.01 | Get template data fields |\n| POST | /api/autofill/create | $0.02 | Autofill a brand template |\n| POST | /api/autofill/status | $0.01 | Check autofill job status |\n| POST | /api/imports/create | $0.02 | Import a design from URL |\n| POST | /api/imports/status | $0.01 | Check import job status |\n| POST | /api/resize/create | $0.02 | Resize a design |\n| POST | /api/resize/status | $0.01 | Check resize job status |\n| POST | /api/folders/create | $0.01 | Create a folder |\n| POST | /api/folders/get | $0.01 | Get folder details |\n| POST | /api/folders/update | $0.01 | Rename a folder |\n| POST | /api/folders/delete | $0.01 | Delete a folder |\n| POST | /api/folders/items | $0.01 | List folder contents |\n| POST | /api/folders/move | $0.01 | Move items between folders |\n| POST | /api/comments/create | $0.01 | Add a comment to a design |\n| POST | /api/comments/get | $0.01 | Get a comment thread |\n| POST | /api/comments/reply | $0.01 | Reply to a comment |\n| POST | /api/comments/list-replies | $0.01 | List replies in a thread |\n\n## Designs\n\n### POST /api/designs/create ($0.01)\nCreate a new Canva design.\n- preset (string, optional): \"doc\" | \"email\" | \"presentation\" | \"whiteboard\"\n- asset_id (string, optional): Image asset ID to insert\n- title (string, optional): Design title (1-255 chars)\n- width/height (number, optional): Custom dimensions in px (40-8000)\n\n### POST /api/designs/list ($0.01)\nList designs. Body: { ownership?, sort_by?, continuation? }\n\n### POST /api/designs/get ($0.01)\nGet design details. Body: { design_id }\n\n### POST /api/designs/pages ($0.01)\nGet pages of a design. Body: { design_id }\n\n### POST /api/designs/export-formats ($0.01)\nGet available export formats. Body: { design_id }\n\n### POST /api/designs/export ($0.02)\nExport to PDF/JPG/PNG/GIF/PPTX/MP4. Body: { design_id, format: { type, quality?, lossless? } }. Async with polling.\n\n## Assets\n\n### POST /api/assets/upload ($0.01)\nUpload by URL. Body: { name, url }. Async with polling.\n\n### POST /api/assets/get ($0.01)\nGet asset details. Body: { asset_id }\n\n### POST /api/assets/update ($0.01)\nUpdate asset. Body: { asset_id, name?, tags? }\n\n### POST /api/assets/delete ($0.01)\nDelete asset. Body: { asset_id }\n\n## Brand Templates\n\n### POST /api/brand-templates/list ($0.01)\nList templates. Body: { query?, continuation? }\n\n### POST /api/brand-templates/get ($0.01)\nGet template details. Body: { brand_template_id }\n\n### POST /api/brand-templates/dataset ($0.01)\nGet template data fields. Body: { brand_template_id }\n\n## Autofill\n\n### POST /api/autofill/create ($0.02)\nAutofill a brand template with data. Body: { brand_template_id, data, title? }. Async with polling.\n\n### POST /api/autofill/status ($0.01)\nCheck job status. Body: { job_id }\n\n## Imports\n\n### POST /api/imports/create ($0.02)\nImport a design from URL. Body: { url, title? }. Async with polling.\n\n### POST /api/imports/status ($0.01)\nCheck job status. Body: { job_id }\n\n## Resize\n\n### POST /api/resize/create ($0.02)\nResize a design. Body: { design_id, width, height }. Async with polling.\n\n### POST /api/resize/status ($0.01)\nCheck job status. Body: { job_id }\n\n## Folders\n\n### POST /api/folders/create ($0.01)\nCreate a folder. Body: { name, parent_folder_id? }\n\n### POST /api/folders/get ($0.01)\nGet folder details. Body: { folder_id }\n\n### POST /api/folders/update ($0.01)\nRename a folder. Body: { folder_id, name }\n\n### POST /api/folders/delete ($0.01)\nDelete a folder. Body: { folder_id }\n\n### POST /api/folders/items ($0.01)\nList folder contents. Body: { folder_id, continuation? }\n\n### POST /api/folders/move ($0.01)\nMove item between folders. Body: { item_id, from_folder_id, to_folder_id }\n\n## Comments (Canva Preview API)\n\n### POST /api/comments/create ($0.01)\nAdd a comment. Body: { design_id, message, assignee_id? }\n\n### POST /api/comments/get ($0.01)\nGet a comment thread. Body: { design_id, thread_id }\n\n### POST /api/comments/reply ($0.01)\nReply to a comment. Body: { design_id, thread_id, message }\n\n### POST /api/comments/list-replies ($0.01)\nList replies. Body: { design_id, thread_id, continuation? }\n\n## Notes\n\n- Blank designs auto-delete after 7 days if not edited in Canva\n- Export download URLs are valid for 24 hours\n- Canva rate limits: ~20 requests/minute per user for most operations\n- Async endpoints (export, upload, autofill, import, resize) poll automatically before returning\n- All paid endpoints charge on request, even if the Canva operation fails — validate inputs first\n- Comments API uses Canva preview features — may change\n"}