Agents (MCP)
OIM exposes a remote Model Context Protocol server, so an AI agent (Claude, or any MCP client) can create projects, compose layers and export signed .oim files on your account.
Closed beta
The connector works on accounts with access to OIM-Studio, which is currently invitation-only. Everything the agent does lands in your account's projects and media, and counts against your quotas like work done by hand.
Connect
| Endpoint | https://mcp.oim.media/mcp |
| Transport | Streamable HTTP (JSON responses, stateless) |
| Authentication | OAuth 2.1 bearer token issued by the OIM sign-in |
| Discovery | https://mcp.oim.media/.well-known/oauth-protected-resource |
Add https://mcp.oim.media/mcp as a custom connector in your MCP client. The first call answers 401 with a WWW-Authenticate header that points at the discovery document; the client then opens the OIM sign-in and stores the token. There is no API key to copy.
Tools
| Group | Tools | What they do |
|---|---|---|
| Projects and pages | oim_create_project, oim_add_page, oim_add_pages, oim_list_pages, oim_select_page, oim_rename_page, oim_set_languages | Create a project, add and pick pages, declare the languages its text carries |
| Canvas | oim_set_canvas_size, oim_set_canvas_background, oim_set_canvas_texture, oim_apply_theme, oim_clear_canvas | Size, background, texture and colour theme of a page |
| Layers | oim_create_shape, oim_create_artistic_text, oim_create_card, oim_create_mask, oim_update_shape, oim_batch_design, oim_auto_layout, oim_ungroup_layers, oim_convert_group_to_component | Add and edit shapes, text, frames, masks and groups; oim_batch_design applies many changes in one call |
| Images | oim_upload_media, oim_crop_layer, oim_apply_filter | Upload an image to your media, frame it and apply filters |
| Motion | oim_set_animation, oim_configure_scene_loop | Keyframes, presets and looping parallax scenes |
| Reading | oim_get_canvas_summary, oim_inspect_layers, oim_search_elements, oim_design_guide | What is on the canvas, and the design guidance the agent should follow |
| Output | oim_preview, oim_export, oim_export_status, oim_export_to_blog | Render a preview, export a signed .oim (or an image), and publish to the OIM blog |
Every tool that edits a canvas accepts an optional page_id (from oim_list_pages); without it, the active page is used.
Example
A request to create a text layer:
{
"name": "oim_create_artistic_text",
"arguments": {
"project_id": "6f1c2a4e-8b3d-4c9a-9e21-3d5b7a0c1f42",
"text": "Always offline",
"content": { "en": "Always offline", "es": "Siempre sin conexión" },
"x": 80, "y": 120, "fontSize": 64,
"fontFamily": "Pixelify Sans",
"artisticPreset": "custom"
}
}How export works
The agent does not sign files itself. oim_export asks your open OIM-Studio tab to export the page, which packages it through the same signing service as a manual export. Keep studio.oim.media open and up to date while the agent exports; oim_export_status follows an export that takes longer than the call.
Security
- Your session, your data. The token is your OIM session. The agent reads and writes only what your account can: row-level security applies to every query, exactly as in the editor.
- Revocable. Revoking the app from your account ends the session; the next call answers
401. - No secrets in the agent. The connector holds no signing key and no service credentials on your behalf; signatures are made by the signing service when your editor exports.
- Blog publishing is restricted.
oim_export_to_bloguploads only for administrators and moderators.
Limits
| Limit | Value |
|---|---|
| Requests | 60 per minute per account (429 rate_limited above it) |
| Inline export | Files up to 5 MB come back in the response; larger ones stay in your media in OIM-Studio |
| Quotas | Storage and signatures count against your plan, as in the editor |
| AI cost | Generation runs in your agent and is paid by its provider; OIM adds no AI charges |
Errors
| Status | Meaning |
|---|---|
401 unauthorized | Missing, expired or revoked token: sign in again from your client |
429 rate_limited | Too many requests: wait a minute |
503 | OIM could not verify the session (our side); retry later |