yumo · docs
MCPTool reference

Vision boards

Boards, items, stickers, groups, connections, reactions, comments, budget, and collaborators.

Boards

list_vision_boards

{ "includeArchived": false }

Pass "onlyArchived": true to list only archived boards.

get_vision_board

Returns the full board payload — metadata, items (with their groupId), groups, connections, and your role. Item data shapes vary by type; see add_vision_board_item below.

{ "id": "vb_..." }

create_vision_board

{
  "name": "Italy summer 2026",
  "description": "Amalfi + Sicily scouting",
  "destination": "Italy"
}

update_vision_board

Metadata only (name, description, destination, currency). Pass null to clear description or destination.

{
  "id": "vb_...",
  "name": "Italy & Sicily 2026",
  "currency": "EUR"
}

archive_vision_board

Hides the board from default listings; items preserved, reversible.

{ "id": "vb_..." }

unarchive_vision_board

{ "id": "vb_..." }

Hard-deleting a board is intentionally not exposed via MCP — use archive_vision_board instead. Permanent deletion is owner-only and only available in the web UI.

materialize_vision_board

Converts a board into a real trip. Per-type mapping:

  • card with kind: "activity" → bucket-list item
  • card with kind: "note" → trip note
  • location → bucket-list item
  • hotel → hotel booking
  • flight → flight booking
  • availability → skipped (board-only)

Pass item ids, group ids, or both — groups expand to their members and are unioned with includedItemIds.

{
  "boardId": "vb_...",
  "tripName": "Italy 2026",
  "destination": "Rome",
  "partySize": 2,
  "startDate": "2026-06-15T00:00:00Z",
  "endDate": "2026-06-29T00:00:00Z",
  "includedItemIds": ["vbi_..."],
  "includedGroupIds": ["vbg_..."]
}

Items

type must be one of: card, location, hotel, flight, availability. For image stickers (including Giphy GIFs) use add_vision_board_sticker — it handles fetching and re-hosting.

Canvas coordinates x / y should stay in the 0–2000 range; space items ~250 apart to avoid overlap. Any item can carry an estimatedCost (integer cents in the board's currency) that contributes to get_vision_board_budget.

add_vision_board_itemcard

{
  "boardId": "vb_...",
  "type": "card",
  "x": 200,
  "y": 100,
  "data": {
    "title": "Explore Trastevere",
    "kind": "activity",
    "notes": "Pick a walking route",
    "estimatedCost": 0
  }
}

Use kind: "note" for free-form text; kind: "activity" for things to do (materializes into bucket list).

add_vision_board_itemlocation

{
  "boardId": "vb_...",
  "type": "location",
  "x": 500,
  "y": 100,
  "data": {
    "name": "Piazza Navona",
    "address": "00186 Roma RM, Italy",
    "placeId": "ChIJi6C1MxFhLxMRgbP8nQx5-Zo",
    "lat": "41.8992",
    "lng": "12.4731"
  }
}

Use resolve_place_from_id first to hydrate placeId, lat, lng, photoUrl, photoAttribution from a Google place id.

add_vision_board_itemhotel

{
  "boardId": "vb_...",
  "type": "hotel",
  "x": 800,
  "y": 100,
  "data": {
    "name": "Hotel de Russie",
    "address": "Via del Babuino 9, Rome",
    "checkIn": "2026-06-16",
    "checkOut": "2026-06-20",
    "priceRange": "$$$$",
    "bookingUrl": "https://..."
  }
}

add_vision_board_itemflight

{
  "boardId": "vb_...",
  "type": "flight",
  "x": 1100,
  "y": 100,
  "data": {
    "origin": "SFO",
    "destination": "FCO",
    "date": "2026-06-15",
    "airline": "United"
  }
}

add_vision_board_itemavailability

One per board — a shared coordination card. entries is keyed by userId (from get_vision_board_collaborators); each value is an array of { start, end, notes? } ranges. Start with an empty object and add ranges via update_vision_board_item.

{
  "boardId": "vb_...",
  "type": "availability",
  "x": 1400,
  "y": 100,
  "data": {
    "duration": "1 week",
    "timeOfYear": "June",
    "entries": {}
  }
}

update_vision_board_item

data is a full replacement — read current data via get_vision_board first.

{ "itemId": "vbi_...", "x": 240, "y": 120 }

delete_vision_board_item

{ "itemId": "vbi_..." }

Stickers

search_giphy_stickers

{ "query": "airplane", "limit": 12, "rating": "pg" }

add_vision_board_sticker

Accepts any https URL. *.giphy.com URLs are served directly; other hosts are re-hosted to yumo's CDN. Content-Type must be an image format (PNG / JPEG / WebP / GIF / HEIC); max 16 MB.

{
  "boardId": "vb_...",
  "url": "https://media.giphy.com/media/.../giphy.gif",
  "x": 50,
  "y": 50
}

Groups

create_vision_board_group

Requires at least 2 item ids. Existing group memberships are replaced (single-group invariant).

{
  "boardId": "vb_...",
  "itemIds": ["vbi_...", "vbi_..."],
  "name": "Amalfi",
  "color": "#5b50c8",
  "icon": "🏖️"
}

update_vision_board_group

{ "boardId": "vb_...", "groupId": "vbg_...", "name": "Amalfi coast" }

delete_vision_board_group

Items are unparented, not deleted.

{ "boardId": "vb_...", "groupId": "vbg_..." }

set_group_membership

Declarative bulk assign. Replaces the full list — pass [] to clear.

{
  "boardId": "vb_...",
  "groupId": "vbg_...",
  "itemIds": ["vbi_...", "vbi_..."]
}

auto_layout_group

Tiles the group's items into a grid anchored at the group's current top-left. Defaults: spacing 16, columns ≈ ceil(sqrt(itemCount)).

{ "boardId": "vb_...", "groupId": "vbg_..." }

Connections

add_vision_board_connection

{
  "boardId": "vb_...",
  "fromItemId": "vbi_...",
  "toItemId": "vbi_..."
}

delete_vision_board_connection

Connection id comes from board.connections in get_vision_board.

{ "boardId": "vb_...", "connectionId": "vbc_..." }

Reactions

react_to_vision_board_item

Toggles a single emoji reaction as the authenticated user. Re-calling with the same emoji removes your reaction. Allowed emojis: heart, eyes, ban, thumbs_up, fire, question.

{ "itemId": "vbi_...", "emoji": "heart" }

list_vision_board_item_reactions

Full list of reactions on an item with user info. For aggregate counts, read items[].reactions from get_vision_board instead.

{ "itemId": "vbi_..." }

Comments

add_vision_board_item_comment

Adds a comment to an item. When posted via MCP it's always tagged authorKind: "agent" so collaborators see an "Assistant" chip. Body up to 4000 chars.

{
  "itemId": "vbi_...",
  "body": "This one's a short walk from the flight hotel."
}

list_vision_board_item_comments

Chronological order; soft-deleted comments are returned with body: null and deletedAt set.

{ "itemId": "vbi_..." }

Budget

get_vision_board_budget

Aggregated totals in the board's currency, grouped by group id. ungrouped captures costed items not in any group.

{ "boardId": "vb_..." }

Places

resolve_place_from_id

Fetches Google Places details for a place_id and returns normalized fields ready for a location or hotel item: { placeId, name, address, lat, lng, photoUrl, photoAttribution }. The photo is re-hosted to yumo's CDN.

{ "placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4" }

Collaborators

get_vision_board_collaborators

{ "boardId": "vb_..." }

invite_vision_board_collaborator

{
  "boardId": "vb_...",
  "email": "[email protected]",
  "role": "editor"
}

remove_vision_board_collaborator

{ "boardId": "vb_...", "collaboratorId": "usr_..." }

Need help or found a bug?

Join the yumo community on Discord. We answer questions, take feature requests, and triage bug reports there.

Join the Discord

On this page