{
  "markdown": "## Install as a skill\n\n```bash\nnpx skills add canvora/canvora-mcp\n```\n\n# Canvora — visuals for AI agents\n\n[![npm](https://img.shields.io/npm/v/%40canvora%2Fcli)](https://www.npmjs.com/package/@canvora/cli)\n[![Canvora MCP server](https://glama.ai/mcp/servers/canvora/canvora-mcp/badges/score.svg)](https://glama.ai/mcp/servers/canvora/canvora-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n**Give your agent a design department.** Turn any idea, URL, doc, or PDF into finished, on-brand visuals: **82 formats** (posts, carousels, decks, PDFs, ads, infographics, landing-page kits), generated natively in **150+ languages** — including RTL and CJK. Brand kits keep every output in the client's colors, fonts, logo, and tone.\n\n```bash\ncanvora generate --idea \"5 tips for remote work\" \\\n  --format linkedin_carousel --slides linkedin_carousel=5 \\\n  --brand $BRAND_ID --wait --json\n# → 5 finished branded slides on CDN URLs\n```\n\nYour agent writes the brief. Canvora does the design. The outputs are stable CDN URLs ready to post, embed, or hand to a scheduler (works great upstream of [Postiz](https://github.com/gitroomhq/postiz-agent) or any posting tool: **generate → schedule**, end to end agentic).\n\nThis repo is the agent-facing toolkit for [Canvora](https://canvora.ai/for-agents):\n\n- **Agent skills** — [`skills/`](skills/): 11 task-specific skills, one `npx skills add` installs all of them into Claude Code, Cursor, Codex, OpenCode, OpenClaw and 60+ agents.\n\n  | Skill | For |\n  |---|---|\n  | [`canvora`](skills/canvora/SKILL.md) | core: setup, generate loop, credits, refinement |\n  | [`instagram-carousel`](skills/instagram-carousel/SKILL.md) | Instagram carousels / swipe posts |\n  | [`linkedin-carousel`](skills/linkedin-carousel/SKILL.md) | LinkedIn document carousels + safe zones |\n  | [`pitch-deck`](skills/pitch-deck/SKILL.md) | pitch/sales/training decks, document → slides |\n  | [`pdf-document`](skills/pdf-document/SKILL.md) | multi-page PDFs: brochures, reports, one-pagers |\n  | [`landing-page-visuals`](skills/landing-page-visuals/SKILL.md) | a whole page's visual kit from its URL |\n  | [`ad-campaign`](skills/ad-campaign/SKILL.md) | paid social + display ad sets and variants |\n  | [`blog-promo-kit`](skills/blog-promo-kit/SKILL.md) | header, OG image and promo set from one post |\n  | [`data-infographic`](skills/data-infographic/SKILL.md) | process flows, comparisons, timelines, stats |\n  | [`multilingual-campaign`](skills/multilingual-campaign/SKILL.md) | one campaign → many languages |\n  | [`product-photo-visuals`](skills/product-photo-visuals/SKILL.md) | designs built around the user's own photos |\n  | [`visual-refresh`](skills/visual-refresh/SKILL.md) | edit, vary, localize and revert what exists |\n- **Remote MCP server** — for Claude, ChatGPT, Cursor, and any MCP client. Nothing to install.\n- **`canvora` CLI** — for shell-native agents, cron jobs, and CI. Zero dependencies.\n\n> The Canvora service itself is hosted; this repo contains client tooling, skills, and docs.\n\n## Option 1 — Skills + CLI (Claude Code, Cursor, Codex, OpenClaw, shell-native agents)\n\n```bash\nnpx skills add canvora/canvora-mcp     # installs the skills (they set up the CLI on first use)\n# or just the CLI:\nnpm install -g @canvora/cli\n\nexport CANVORA_API_KEY=vd_...   # create at canvora.ai → Integrations → API Keys (all plans, incl. Free)\n\n# one atomic command: generates, polls, exits with the output URLs\ncanvora generate \\\n  --idea \"5 tips for remote work\" \\\n  --format linkedin_carousel --slides linkedin_carousel=5 \\\n  --wait --json\n```\n\nMore runnable recipes: [`examples/`](examples/)\n\n### Commands\n\n| Command | What it does |\n|---|---|\n| `canvora generate` | Create visuals from an `--idea` (short concept, Canvora develops it), `--input` (your full content text), `--url`, or `--file-url` (PDF). `--wait` polls to completion and prints output URLs. |\n| `canvora localize <id> --language es` | Same design, new language: translates an existing generation's visuals, layout untouched |\n| `canvora variations <id> [--count n]` | Fresh takes on an existing generation's visuals |\n| `canvora edit <outputId> --prompt \"...\"` | Natural-language edit of one visual (previews the change; `--yes` auto-confirms) |\n| `canvora status <id>` | Check a generation and list its output URLs |\n| `canvora download <id> --dir out/` | Save all output files locally |\n| `canvora formats` | All 82 format IDs with dimensions (live catalog) |\n| `canvora brands` | Your brand kits (pass one via `--brand <uuid>`) |\n| `canvora credits` | Credit balance (10 credits per visual, 15 per carousel/deck slide) |\n\nEvery command takes `--json` for machine-readable stdout; progress and errors go to stderr, so piping stays clean. Exit codes: `0` success, `1` failure, `2` usage error.\n\n### Generate flags\n\n```\n--idea \"concept\"          short concept - Canvora develops it into content\n--input \"text\"            your full content text, used as the source material\n--url <url>               extract content from a webpage\n--file-url <pdf-url>      extract content from a PDF\n--format <id>[,<id>...]   output formats (see: canvora formats)\n--slides <format>=<n>     slide count for carousel/deck formats (1-10, default 5); match it to the item count your idea promises\n--brand <uuid>            apply a brand kit\n--style <name>            modern | minimal | bold | elegant | playful | corporate | creative | dark\n--resolution 2K|4K        4K on paid plans\n--language <code-or-name> visual text language (\"es\", \"Spanish\"); default: matches your input's language\n--exact                   use --input text verbatim, no rewording (quotes, taglines)\n--logo                    place the brand kit's logo on the visual (needs --brand)\n--cta                     end a carousel/deck on a call-to-action slide\n--no-text                 pure visual, no typography (backgrounds, hero imagery)\n--freeform                ignore format-specific art direction, use dimensions only\n--landing-page            with --url: read the page's sections and produce a matching\n                          landingPage-* visual kit (Starter plan or higher)\n--project <uuid>          group outputs into a project/campaign\n--workspace <uuid>        bill a team workspace pool instead of your personal credits\n--wait                    poll until done (--timeout 600, --poll 5 seconds)\n--json                    machine-readable output\n```\n\n## Option 2 — MCP (Claude, ChatGPT, any MCP client)\n\nOne remote server, OAuth sign-in, 16 tools your agent discovers on connect:\n\n| | |\n|---|---|\n| **Server URL** | `https://api.canvora.ai/mcp` (streamable HTTP) |\n| **Claude** | Settings → Connectors → Add custom connector → OAuth Client ID `claude_mcp` |\n| **ChatGPT** | Settings → Apps → Developer mode → Create app → OAuth Client ID `chatgpt_mcp` |\n| **Registry** | `ai.canvora/canvora` on the [official MCP Registry](https://registry.modelcontextprotocol.io) — also on [Glama](https://glama.ai/mcp/servers/canvora/canvora-mcp), [Smithery](https://smithery.ai/servers/canvora-ai/canvora-ai), [mcpservers.org](https://mcpservers.org/servers/canvora/canvora-mcp) |\n\nStep-by-step: [canvora.ai/help/integrations/mcp-setup](https://canvora.ai/help/integrations/mcp-setup)\n\n## Option 3 — Raw REST\n\n```bash\ncurl -X POST https://api.canvora.ai/api/generations \\\n  -H \"X-API-Key: vd_YOUR_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"inputType\": \"text\",\n    \"inputContent\": \"5 tips for remote work\",\n    \"outputFormats\": [\"linkedin_carousel\"],\n    \"carouselCounts\": {\"linkedin_carousel\": 5}\n  }'\n```\n\nFull API guide: [canvora.ai/help/integrations/api-keys](https://canvora.ai/help/integrations/api-keys)\n\n## What agents build with this\n\n- **Client content pipelines** — brief in, branded multi-format campaign out, scheduled by your posting tool\n- **Multilingual campaigns** — generate once, `canvora localize` into 10 markets; layout survives, text goes native ([skill](skills/multilingual-campaign/SKILL.md))\n- **Save-optimized carousels** — hook-first structure and per-slide art direction encoded as a skill ([skill](skills/instagram-carousel/SKILL.md))\n- **Docs → decks** — point `--file-url` at a PDF report, get presentation slides\n- **Ad sets** — `ad_square,ad_landscape,ad_portrait` from one product URL, all placements covered\n\n## Built to be called by software\n\n- **Predictable costs** — flat credit pricing (10/visual, 15/slide); `canvora credits` before big jobs; failed generations auto-refund.\n- **Human in the loop** — everything your agent creates also lands in your Canvora dashboard, ready for review, editing, and export before it goes anywhere.\n- **Scoped, revocable keys** — hashed at rest, per-key usage tracking, one-click revoke.\n- **Outputs on a CDN** — stable URLs your agent can post, embed, or hand to a scheduler.\n- **Works on every plan** — API and MCP access included on Free (free credits, no card).\n\n## Links\n\n- [canvora.ai/for-agents](https://canvora.ai/for-agents) — the agent overview\n- [MCP setup guide](https://canvora.ai/help/integrations/mcp-setup) · [API guide](https://canvora.ai/help/integrations/api-keys)\n- [Pricing](https://canvora.ai/pricing)\n\nMIT licensed (CLI, skills, and docs in this repo).\n",
  "bytes": 9238,
  "sha": "1ccd3d73a8fd04380b89fb8a479eaa901f571ca1894efb5183ee6352dd7c8d8b",
  "repo_slug": "canvora/canvora-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_canvora_canvora_a8a3ded0/readme"
}