{"_id":"@bossforce.ai/mcp-canva","name":"@bossforce.ai/mcp-canva","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@bossforce.ai/mcp-canva","version":"0.1.0","type":"module","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/design-creative/canva"},"publishConfig":{"access":"public"},"bin":{"bossforce-mcp-canva":"dist/bin.js"},"dependencies":{"zod":"^4.4.3","@bossforce.ai/mcp-core":"0.3.0"},"devDependencies":{"@bossforce.ai/mcp-testkit":"0.0.0"},"scripts":{"build":"tsc -p tsconfig.json","test":"node --test \"dist/*.test.js\""},"_id":"@bossforce.ai/mcp-canva@0.1.0","description":"MCP server for the [Canva Connect API](https://www.canva.dev/docs/connect/). Read-only access to a Canva account: list and search designs, read a design's metadata, browse folder contents, and read the current user and profile. Authenticated with OAuth2 u","bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","_integrity":"sha512-e9bg6bDC9XXYCp+tOg4eDPUFYm1q9+ThLZm4hGgMJdHQU6j3hc0yelUhc9H6rVnlXYGqGff1lTFBBZm70iapDg==","_resolved":"C:\\Users\\user\\AppData\\Local\\Temp\\dae832a98fa7e79d8ee4bd5e58d7f039\\bossforce.ai-mcp-canva-0.1.0.tgz","_from":"file:bossforce.ai-mcp-canva-0.1.0.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-e9bg6bDC9XXYCp+tOg4eDPUFYm1q9+ThLZm4hGgMJdHQU6j3hc0yelUhc9H6rVnlXYGqGff1lTFBBZm70iapDg==","shasum":"cd4e95687683876a3224577c4d887f1ec622aea6","tarball":"https://registry.npmjs.org/@bossforce.ai/mcp-canva/-/mcp-canva-0.1.0.tgz","fileCount":26,"unpackedSize":28811,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBr+lCukcoljF3u8zbSgUmnNGJJHoAPVW/aSzWIsBhEuAiB62w3HZuqXUWPWOJsp64iUH/Od7Axdbqx/brnhuVAScg=="}]},"_npmUser":{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"},"directories":{},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-canva_0.1.0_1781237953914_0.6522000112308379"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-12T04:19:13.728Z","0.1.0":"2026-06-12T04:19:14.139Z","modified":"2026-06-12T04:19:14.352Z"},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"description":"MCP server for the [Canva Connect API](https://www.canva.dev/docs/connect/). Read-only access to a Canva account: list and search designs, read a design's metadata, browse folder contents, and read the current user and profile. Authenticated with OAuth2 u","homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/design-creative/canva"},"bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"readme":"# @bossforce.ai/mcp-canva\n\nMCP server for the [Canva Connect API](https://www.canva.dev/docs/connect/).\nRead-only access to a Canva account: list and search designs, read a design's\nmetadata, browse folder contents, and read the current user and profile.\nAuthenticated with OAuth2 using the refresh-token grant; the refresh token is\nexchanged for short-lived access tokens automatically.\n\n## Credentials\n\n| Env                   | How to obtain                                                                                                             |\n| --------------------- | ------------------------------------------------------------------------------------------------------------------------- |\n| `CANVA_CLIENT_ID`     | Client ID of an integration from the [Canva Developer portal](https://www.canva.com/developers/integrations/connect-api). |\n| `CANVA_CLIENT_SECRET` | The matching client secret for that integration.                                                                          |\n| `CANVA_REFRESH_TOKEN` | Obtained automatically when the account authorizes access (OAuth2 authorization-code flow performed by the platform).     |\n\nThe credentials are read lazily, so the server boots and answers `tools/list`\nwithout them; calls fail with an `auth` error until they are set. On the first\ncall the client exchanges the refresh token for an access token\n(`POST https://api.canva.com/rest/v1/oauth/token`, HTTP Basic auth,\n`grant_type=refresh_token`, form-encoded), caches it, and re-fetches once on a\n`401`.\n\nRequired scopes: `design:content:read`, `design:meta:read`, `folder:read`,\n`profile:read`.\n\n## Tools\n\n| Tool                | Arguments                                                         | Returns                                   |\n| ------------------- | ----------------------------------------------------------------- | ----------------------------------------- |\n| `get_current_user`  | —                                                                 | user id and team id                       |\n| `get_user_profile`  | —                                                                 | the user's profile (display name)         |\n| `list_designs`      | `query?`, `ownership?`, `sort_by?`, `limit?`, `continuation?`     | matching designs and a continuation token |\n| `get_design`        | `design_id`                                                       | a design's metadata                       |\n| `list_folder_items` | `folder_id`, `item_types?`, `sort_by?`, `limit?`, `continuation?` | items in the folder                       |\n\nResponses are Canva's native JSON payloads, returned as `structuredContent`.\n\n## Develop\n\n```bash\npnpm --filter @bossforce.ai/mcp-canva build\npnpm --filter @bossforce.ai/mcp-canva test\n```\n\nRegenerate the tools/list snapshot after an intentional signature change:\n\n```bash\nUPDATE_SNAPSHOTS=1 pnpm --filter @bossforce.ai/mcp-canva test\n```\n","readmeFilename":"README.md","_rev":"1-0ab5f44b44ffc56b88f48e304004fcc4"}