streamable-httpMITupdated 26d ago
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.
What can you do with Canvora?
Install as a skill
npx skills add canvora/canvora-mcp
Canvora โ visuals for AI agents
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.
canvora generate --idea "5 tips for remote work" \
--format linkedin_carousel --slides linkedin_carousel=5 \
--brand $BRAND_ID --wait --json
# โ 5 finished branded slides on CDN URLs
Your 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 or any posting tool: generate โ schedule, end to end agentic).
This repo is the agent-facing toolkit for Canvora:
-
Agent skills โ
skills/: 11 task-specific skills, onenpx skills addinstalls all of them into Claude Code, Cursor, Codex, OpenCode, OpenClaw and 60+ agents.Skill For canvoracore: setup, generate loop, credits, refinement instagram-carouselInstagram carousels / swipe posts linkedin-carouselLinkedIn document carousels + safe zones pitch-deckpitch/sales/training decks, document โ slides pdf-documentmulti-page PDFs: brochures, reports, one-pagers landing-page-visualsa whole page's visual kit from its URL ad-campaignpaid social + display ad sets and variants blog-promo-kitheader, OG image and promo set from one post data-infographicprocess flows, comparisons, timelines, stats multilingual-campaignone campaign โ many languages product-photo-visualsdesigns built around the user's own photos visual-refreshedit, vary, localize and revert what exists -
Remote MCP server โ for Claude, ChatGPT, Cursor, and any MCP client. Nothing to install.
-
canvoraCLI โ for shell-native agents, cron jobs, and CI. Zero dependencies.
The Canvora service itself is hosted; this repo contains client tooling, skills, and docs.
Option 1 โ Skills + CLI (Claude Code, Cursor, Codex, OpenClaw, shell-native agents)
npx skills add canvora/canvora-mcp # installs the skills (they set up the CLI on first use)
# or just the CLI:
npm install -g @canvora/cli
export CANVORA_API_KEY=vd_... # create at canvora.ai โ Integrations โ API Keys (all plans, incl. Free)
# one atomic command: generates, polls, exits with the output URLs
canvora generate \
--idea "5 tips for remote work" \
--format linkedin_carousel --slides linkedin_carousel=5 \
--wait --json
More runnable recipes: examples/
Commands
| Command | What it does |
|---|---|
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. |
canvora localize <id> --language es |
Same design, new language: translates an existing generation's visuals, layout untouched |
canvora variations <id> [--count n] |
Fresh takes on an existing generation's visuals |
canvora edit <outputId> --prompt "..." |
Natural-language edit of one visual (previews the change; --yes auto-confirms) |
canvora status <id> |
Check a generation and list its output URLs |
canvora download <id> --dir out/ |
Save all output files locally |
canvora formats |
All 82 format IDs with dimensions (live catalog) |
canvora brands |
Your brand kits (pass one via --brand <uuid>) |
canvora credits |
Credit balance (10 credits per visual, 15 per carousel/deck slide) |
Every 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.
Generate flags
--idea "concept" short concept - Canvora develops it into content
--input "text" your full content text, used as the source material
--url <url> extract content from a webpage
--file-url <pdf-url> extract content from a PDF
--format <id>[,<id>...] output formats (see: canvora formats)
--slides <format>=<n> slide count for carousel/deck formats (1-10, default 5); match it to the item count your idea promises
--brand <uuid> apply a brand kit
--style <name> modern | minimal | bold | elegant | playful | corporate | creative | dark
--resolution 2K|4K 4K on paid plans
--language <code-or-name> visual text language ("es", "Spanish"); default: matches your input's language
--exact use --input text verbatim, no rewording (quotes, taglines)
--logo place the brand kit's logo on the visual (needs --brand)
--cta end a carousel/deck on a call-to-action slide
--no-text pure visual, no typography (backgrounds, hero imagery)
--freeform ignore format-specific art direction, use dimensions only
--landing-page with --url: read the page's sections and produce a matching
landingPage-* visual kit (Starter plan or higher)
--project <uuid> group outputs into a project/campaign
--workspace <uuid> bill a team workspace pool instead of your personal credits
--wait poll until done (--timeout 600, --poll 5 seconds)
--json machine-readable output
Option 2 โ MCP (Claude, ChatGPT, any MCP client)
One remote server, OAuth sign-in, 16 tools your agent discovers on connect:
| Server URL | https://api.canvora.ai/mcp (streamable HTTP) |
| Claude | Settings โ Connectors โ Add custom connector โ OAuth Client ID claude_mcp |
| ChatGPT | Settings โ Apps โ Developer mode โ Create app โ OAuth Client ID chatgpt_mcp |
| Registry | ai.canvora/canvora on the official MCP Registry โ also on Glama, Smithery, mcpservers.org |
Step-by-step: canvora.ai/help/integrations/mcp-setup
Option 3 โ Raw REST
curl -X POST https://api.canvora.ai/api/generations \
-H "X-API-Key: vd_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"inputType": "text",
"inputContent": "5 tips for remote work",
"outputFormats": ["linkedin_carousel"],
"carouselCounts": {"linkedin_carousel": 5}
}'
Full API guide: canvora.ai/help/integrations/api-keys
What agents build with this
- Client content pipelines โ brief in, branded multi-format campaign out, scheduled by your posting tool
- Multilingual campaigns โ generate once,
canvora localizeinto 10 markets; layout survives, text goes native (skill) - Save-optimized carousels โ hook-first structure and per-slide art direction encoded as a skill (skill)
- Docs โ decks โ point
--file-urlat a PDF report, get presentation slides - Ad sets โ
ad_square,ad_landscape,ad_portraitfrom one product URL, all placements covered
Built to be called by software
- Predictable costs โ flat credit pricing (10/visual, 15/slide);
canvora creditsbefore big jobs; failed generations auto-refund. - Human in the loop โ everything your agent creates also lands in your Canvora dashboard, ready for review, editing, and export before it goes anywhere.
- Scoped, revocable keys โ hashed at rest, per-key usage tracking, one-click revoke.
- Outputs on a CDN โ stable URLs your agent can post, embed, or hand to a scheduler.
- Works on every plan โ API and MCP access included on Free (free credits, no card).
Links
- canvora.ai/for-agents โ the agent overview
- MCP setup guide ยท API guide
- Pricing
MIT licensed (CLI, skills, and docs in this repo).
Install
Add Canvora to your client. Pick the one you use.
claude mcp add --transport http canvora https://api.canvora.ai/mcpcodex mcp add canvora --url https://api.canvora.ai/mcp{
"mcpServers": {
"canvora": {
"url": "https://api.canvora.ai/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"canvora": {
"type": "http",
"url": "https://api.canvora.ai/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"canvora": {
"url": "https://api.canvora.ai/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"canvora": {
"serverUrl": "https://api.canvora.ai/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance25/25
- Trust16/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 19 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint โ no local install
Version history
| Versions | Published |
|---|---|
| 1.2.0Latest | Jul 20, 2026 |
| 1.1.0 | Jul 14, 2026 |
| 1.0.0 | Jun 2, 2026 |