Integration guide
Connect Canva to Hermes Agent or OpenClaw with Composio
Let your agent find designs, prepare template data, start Canva jobs, and check their results while keeping visual review and final sharing under your control.
Use Canva as a job system, with a human visual check
A useful scenario is a weekly campaign card: choose an approved brand template, populate product name, price, and call to action, export a PNG, then review it before distribution. Canva's Connect APIs support assets, designs, comments, folders, brand templates, and exports. Composio exposes those operations as separate tools in its current Canva toolkit, which makes each stage visible instead of treating “make a design” as one opaque step.
1. Connect Canva for Hermes or OpenClaw
Managed setup is the same for both frameworks. Open Dashboard → Integrations, find Canva, click Connect, and approve the requested access in Canva. The toolkit supports managed OAuth. Canva's official scope reference explains that scopes are explicit: asset:write does not grant asset:read, for example. If a later action is forbidden, compare its purpose with the scopes and reconnect rather than sending credentials through chat.
2. Confirm what the connected user can see
Use my connected Canva account. Identify the Canva user, list the ten most recently updated designs, and show each title, design ID, and update time. Do not create, edit, move, export, or delete anything.
This checks identity and design visibility without changing the workspace. The agent should first run composio connections and inspect schemas with composio search canva. Current identifiers include CANVA_FETCH_CURRENT_USER_DETAILS, CANVA_LIST_USER_DESIGNS, and CANVA_FETCH_DESIGN_METADATA_AND_ACCESS_INFORMATION. Do not invent parameters from the friendly action names; Composio tools have versioned input schemas.
3. Choose the right creation route
CANVA_POST_DESIGNS creates a new design, but it does not accept arbitrary page content and starts blank. Composio's Canva toolkit guidance says to use CANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOB when text or images must fill a template. First inspect the template dataset with CANVA_RETRIEVE_BRAND_TEMPLATE_DATASET_DEFINITION, then build data only for the fields actually returned by that schema.
Check plan eligibility before choosing autofill. Canva's autofill API reference requires an Enterprise organization for ongoing use; paid-plan users have a limited trial while an integration is under development. If your account lacks access, use the agent to prepare the copy and assets, then populate the design in Canva yourself.
- Have the agent show the selected template title and dataset fields.
- Ask it to prepare values and flag any missing or overlong copy.
- Approve the exact mapping before it starts the autofill job.
- Poll
CANVA_RETRIEVE_DESIGN_AUTOFILL_JOB_STATUSuntil Canva reports completion or failure. - Open the resulting design in Canva and inspect every page before export.
4. Export, inspect, then distribute
Start an export with CANVA_POST_EXPORTS and read it with CANVA_GET_DESIGN_EXPORT_JOB_RESULT. Job creation only proves that Canva accepted the request; it does not prove that the file rendered correctly. Check dimensions, clipped text, font substitutions, image crops, prices, legal copy, and brand colors in the exported file. Sharing to Instagram, Facebook, Drive, or email is a separate write with a separate destination approval.
Avoid deprecated identifiers such as CANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSET and the older export-job action. If the design lives in a team or folder the connected user cannot access, reconnecting will not create that underlying Canva permission; a workspace owner must grant access.
Self-hosted setup for Hermes Agent and OpenClaw
For an installation you run yourself, create a server in your own Composio project, select this app and the tools you need, and connect the intended account. Copy the complete generated MCP URL for that user. The examples below use Composio Platform MCP and a Composio project API key in x-api-key. An app password or provider API key belongs in the app connection flow, not in this header.
Set COMPOSIO_API_KEY in the environment of the agent process and replace the URL placeholder below. Merge the entry into your existing configuration. Keep your project key out of chat and source control. A connection on OpenClaw Launch does not automatically transfer to your own Composio project; Composio connections are scoped to their project and user.
Hermes Agent
Add the server under mcp_servers in ~/.hermes/config.yaml. You can set the environment variable in ~/.hermes/.env.
mcp_servers:
composio:
url: "YOUR_GENERATED_PLATFORM_MCP_URL"
headers:
x-api-key: "${COMPOSIO_API_KEY}"
connect_timeout: 60
timeout: 180Run hermes mcp test composio to check discovery, then start a new session or use /reload-mcp in the Hermes CLI. See the Hermes MCP configuration reference for reload behavior and tool filters.
OpenClaw
Use a release with the native openclaw mcp commands. Its server definitions belong under mcp.servers in ~/.openclaw/openclaw.json:
{
"mcp": {
"servers": {
"composio": {
"url": "YOUR_GENERATED_PLATFORM_MCP_URL",
"transport": "streamable-http",
"headers": {
"x-api-key": "${COMPOSIO_API_KEY}"
}
}
}
}
}Ensure the Gateway service receives the environment variable, restarting that service after changing its environment. Run openclaw mcp doctor composio --probe and begin a new agent session. If your version lacks these commands, update before using this config. The native registry is separate from mcporter. See OpenClaw's MCP reference and HTTP transport fields.
Discovery confirms the MCP connection. Finish with this guide's first read request to check access to the actual app. The hosted composio shell commands earlier in this guide are supplied by OpenClaw Launch; a standalone MCP setup exposes tools through the agent's MCP client instead.
Frequently asked questions
Does the Canva Composio integration work with Hermes Agent?
Yes. Managed Hermes Agent and OpenClaw instances connect Canva through the same Integrations page and use the same discovery and execution workflow.
Does creating a Canva design insert my requested content?
Not by itself. Composio documents that the current create-design action starts a blank design. Use a suitable brand template and the autofill job when content must populate named template fields.
Why can the agent list designs but not export or edit them?
Canva permissions are scope specific. Read access does not imply write or export access. Reconnect with the needed approved scopes and confirm the connected Canva user can access the design.
Should an agent share an exported design automatically?
Review the rendered export first. Confirm the template, data, brand details, crop, spelling, and destination before allowing a separate sharing action.