Code: services/, tools in
services/. Shared rules: README.md.
Connect (users)#
Settings → Connectors → Canva → Connect → sign in → Allow → "Canva is
connected". Uses ImuTechz's Canva Connect integration once registered
(REGISTER-APPS.md). IMURUN must run on port 8732:
Canva matches the redirect exactly and wants 127.0.0.1, not localhost.
Advanced: your own integration#
https://www.canva.com/developers/integrations/connect-api → Create an
integration → scopes design:meta:read, design:content:read → redirect
http:/ → generate secret →
POST /.
Endpoints: https:/,
https:/. Canva requires PKCE (sent) and
authenticates the client with HTTP Basic (client_auth="basic"): the
secret goes in the Authorization header, not the form. For the built-in app
that secret is shipped with IMURUN and is not confidential by design (RFC
8252); PKCE protects the flow. Access tokens last about 4 hours; refresh
tokens are single-use and rotated — IMURUN stores the new one each time.
Tools#
| Tool | Arguments | Does | Permission |
|---|---|---|---|
canva_designs |
query?, limit? |
designs with id and edit link | read |
canva_export |
design_id, format? (pdf, png, jpg, gif, pptx, mp4) |
starts an export, waits up to 20 s, returns download links (they expire) | read — an export changes nothing |
Verified#
Offline: authorize URL, Basic client auth, refresh with rotation, refused refresh, both tools. Not verified against canva.com.