Skip to content

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 ​

Endpointhttps://mcp.oim.media/mcp
TransportStreamable HTTP (JSON responses, stateless)
AuthenticationOAuth 2.1 bearer token issued by the OIM sign-in
Discoveryhttps://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 ​

GroupToolsWhat they do
Projects and pagesoim_create_project, oim_add_page, oim_add_pages, oim_list_pages, oim_select_page, oim_rename_page, oim_set_languagesCreate a project, add and pick pages, declare the languages its text carries
Canvasoim_set_canvas_size, oim_set_canvas_background, oim_set_canvas_texture, oim_apply_theme, oim_clear_canvasSize, background, texture and colour theme of a page
Layersoim_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_componentAdd and edit shapes, text, frames, masks and groups; oim_batch_design applies many changes in one call
Imagesoim_upload_media, oim_crop_layer, oim_apply_filterUpload an image to your media, frame it and apply filters
Motionoim_set_animation, oim_configure_scene_loopKeyframes, presets and looping parallax scenes
Readingoim_get_canvas_summary, oim_inspect_layers, oim_search_elements, oim_design_guideWhat is on the canvas, and the design guidance the agent should follow
Outputoim_preview, oim_export, oim_export_status, oim_export_to_blogRender 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:

json
{
  "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_blog uploads only for administrators and moderators.

Limits ​

LimitValue
Requests60 per minute per account (429 rate_limited above it)
Inline exportFiles up to 5 MB come back in the response; larger ones stay in your media in OIM-Studio
QuotasStorage and signatures count against your plan, as in the editor
AI costGeneration runs in your agent and is paid by its provider; OIM adds no AI charges

Errors ​

StatusMeaning
401 unauthorizedMissing, expired or revoked token: sign in again from your client
429 rate_limitedToo many requests: wait a minute
503OIM could not verify the session (our side); retry later