Suamuka

Connect an AI agent to Suamuka MCP

Suamuka exposes a remote Model Context Protocol server for authenticated agents. Agents can manage posts and schedules, or build complete photo-slide projects—including reusable themes, layouts, components, folders, uploaded images, slides, and individual elements.

Server details

Remote endpoint
https://suamuka.com/mcp/suamuka
Authentication
OAuth 2.1 through Suamuka / Laravel Passport
Scope
mcp:use

1. Add a server

Create a remote MCP connection

In your agent host, add a remote HTTP MCP server and paste the endpoint above. For local development, expose your Herd site through HTTPS if the agent runs outside this machine.

2. Authorize

Sign in and approve access

The agent should discover Suamuka's OAuth metadata, open the browser authorization flow, and receive a bearer token. Tools always act as the approving Suamuka user.

3. Use tools

Let the agent discover capabilities

After authorization, ask your host to list tools from the server. Suamuka returns JSON schemas for every supported action, so the agent can validate inputs before calling them.

Slide Studio workflow

From reusable design system to finished slide document

All slide tools use the same suamuka.slides/1.0 contract as the visual editor. Every write is scoped to the OAuth user and validated before it is saved.

  1. 01 Discover

    List folders, themes, layouts, components, and their stable references.

  2. 02 Build the library

    Create or update custom design primitives before using them in projects.

  3. 03 Create a project

    Start a new deck or duplicate an existing project with fresh identifiers.

  4. 04 Upload images

    Store project images, then attach their asset IDs to photo elements.

  5. 05 Edit precisely

    Add, update, duplicate, delete, or reorder slides and their elements.

  6. 06 Review and export

    Open the returned editor URL for visual review and ordered PNG export.

Available tools

Tool What it does
Slide library
list_slide_library_toolList reusable themes, layouts, and components with stable references.
manage_slide_library_folder_toolCreate, rename, or delete component folders. Deleting a folder keeps its components in Unfiled.
create_slide_library_item_toolCreate a custom theme, layout, or component with a stable generated reference.
update_slide_library_item_toolRename or replace a custom definition; also move components between folders.
delete_slide_library_item_toolDelete an unused custom item. In-use references and built-ins are protected.
Slide projects
list_slide_projects_toolList owned photo-slide projects and their editor links.
get_slide_project_toolRead a complete suamuka.slides/1.0 document.
create_slide_project_toolCreate a validated slide project from reusable library references.
duplicate_slide_project_toolCopy a project into a new draft with fresh project, slide, and element IDs.
set_slide_project_theme_toolApply a library theme without replacing the rest of the document.
manage_slide_toolAdd, update, duplicate, delete, or reorder individual slides.
manage_slide_element_toolAdd, update, delete, or reorder components on one slide.
update_slide_project_toolValidate and replace an owned slide project document.
delete_slide_project_toolPermanently delete an owned project and its attached media.
Slide assets
list_slide_project_assets_toolList uploaded project images, URLs, metadata, and photo-element usages.
upload_slide_project_asset_toolUpload base64 JPEG, PNG, or WebP data up to 10 MB to an owned project.
attach_slide_project_asset_toolSet a photo element's source URL, asset ID, and accessible alt text.
delete_slide_project_asset_toolDelete an unused image; attached assets are protected.
Posts, publishing, and settings
create_post_toolCreate a local AI draft post.
list_posts_toolList posts, optionally filtered by status.
update_post_toolEdit a draft or editable Zernio-backed post.
delete_post_toolDelete a post owned by the authenticated user.
schedule_post_toolSchedule an existing post by exact time or available slot.
list_schedule_toolInspect active platforms, posting settings, and upcoming slots.
submit_post_to_zernio_toolSubmit a Suamuka draft to Zernio as a draft, scheduled post, or immediate post.
list_platforms_toolList platform definitions available in Suamuka.
upsert_platform_toolCreate or update a platform definition.
delete_platform_toolDelete a platform definition by slug.
update_platform_schedule_toolCreate or update a user's platform posting schedule.
get_notification_settings_toolRead notification settings.
update_notification_settings_toolUpdate Telegram notification settings.
get_profile_settings_toolRead profile settings and plan summary.
update_profile_settings_toolUpdate profile name and email.

Image asset workflow

Upload once, then attach by asset ID

Send raw base64 or a data:image/...;base64,... value. Suamuka detects the real file type, stores it on the project's configured media disk, and returns a URL for the photo component. Server filesystem paths are never exposed.

  1. 1. Upload

    Send JPEG, PNG, or WebP data and a file name.

  2. 2. Attach

    Use the returned asset ID with one photo element ID.

  3. 3. Inspect

    List assets to see URLs and every slide using each image.

  4. 4. Delete safely

    Clear both src and assetId before deleting an image.

Upload request

{
  "project_id": "project-uuid",
  "image_base64": "data:image/png;base64,iVBOR...",
  "file_name": "launch-cover.png",
  "alt_text": "Phone showing the product dashboard"
}

Attach request

{
  "project_id": "project-uuid",
  "asset_id": "asset-uuid",
  "slide_id": "slide_uuid",
  "element_id": "element_uuid",
  "alt_text": "The launch dashboard on a phone"
}

The upload tool does not download arbitrary remote URLs. This prevents an agent from making the Suamuka server contact private or untrusted network locations. Download the image in the agent environment, encode it, then upload it.

Library definition shapes

Themes use exactly three colors. Components define reusable defaults. Layouts position component references on the 0–100 canvas.

{
  "theme": { "colors": ["#f4efe6", "#e26b3f", "#18201f"] },
  "component": {
    "type": "headline",
    "position": { "x": 8, "y": 31, "width": 84, "height": 28, "z": 2 },
    "props": { "text": "One clear idea" }
  },
  "layout": {
    "key": "statement",
    "description": "A focused statement slide",
    "elements": [{
      "componentRef": "component.headline.v1",
      "position": { "x": 8, "y": 31, "width": 84, "height": 28, "z": 2 }
    }]
  }
}

Focused vs. bulk edits

Focused tools return the complete updated project, so the next call can use the latest slide and element IDs. For many coordinated changes, get the document once and replace it atomically.

{
  "project_id": "project-uuid",
  "action": "add",
  "slide": {
    "layoutRef": "layout.statement.v1",
    "elements": [{
      "componentRef": "component.headline.v1",
      "props": { "text": "The next useful idea" }
    }]
  }
}

Reorder actions require every current ID exactly once. Positions use percentages: x, y, width, height, and integer z.