Agent Tools
deep.swiss exposes an MCP server so AI assistants can read the site's reels and edit content on your behalf. Connect it once, sign in with your account, and the assistant acts with exactly your permissions.
Connecting
- Server address
- https://deepswiss.bern.guru/mcp
- Sign-in
- Browser sign-in with your deep.swiss account, then a consent screen. Editing tools need an admin account.
{
"mcpServers": {
"deep-swiss": { "url": "https://deepswiss.bern.guru/mcp" }
}
}Tools
List published reels
list_reels · Signed-in account
Returns the live reels of the site in display order.
Parameters
- limit — number (1-100, default 50)
- Maximum number of reels to return.
Example request
{
"name": "list_reels",
"arguments": { "limit": 2 }
}Example response
{
"structuredContent": {
"reels": [
{
"id": "c1f2...",
"type": "video",
"position": 0,
"data": {
"title": "Your Deep Swiss Experience",
"body": "Authentic places, far from the crowds.",
"video": "/media/intro.webm",
"poster": "/media/intro.webp"
},
"updated_at": "2026-09-01T09:12:44.120Z"
},
{
"id": "8ab0...",
"type": "image",
"position": 1,
"data": { "title": "Privacy & Simplicity", "body": "No crowds, no noise." },
"updated_at": "2026-09-01T09:14:02.554Z"
}
]
}
}List draft reels
list_draft_reels · Admin only
Returns the unpublished draft reels, in display order.
Parameters
- limit — number (1-100, default 50)
- Maximum number of drafts to return.
Example request
{
"name": "list_draft_reels",
"arguments": { "limit": 1 }
}Example response
{
"structuredContent": {
"drafts": [
{
"id": "8ab0...",
"type": "image",
"position": 1,
"data": { "title": "Privacy & Simplicity (draft)", "body": "New wording in review." },
"updated_at": "2026-09-07T18:20:11.900Z"
}
]
}
}Update draft reel content
update_draft_reel · Admin only
Merges the given fields into a draft reel's content. Other fields stay untouched. The change stays in the draft until you publish from the CMS.
Parameters
- id — string (required)
- Draft reel id, as returned by list_draft_reels.
- fields — object (required)
- Content fields to merge, e.g. title, body, poster, video.
Example request
{
"name": "update_draft_reel",
"arguments": {
"id": "8ab0...",
"fields": { "title": "Privacy, Health, Humanism" }
}
}Example response
{
"structuredContent": {
"reel": {
"id": "8ab0...",
"type": "image",
"position": 1,
"data": {
"title": "Privacy, Health, Humanism",
"body": "New wording in review."
}
}
}
}Get CMS page content
get_page · Signed-in account
Reads the stored content of a landing page by slug.
Parameters
- slug — string (required)
- For example private-tours-switzerland.
Example request
{
"name": "get_page",
"arguments": { "slug": "private-tours-switzerland" }
}Example response
{
"structuredContent": {
"page": {
"slug": "private-tours-switzerland",
"data": {
"metaTitle": "Private Tours Switzerland | deep.swiss",
"metaDescription": "Private, guided Swiss experiences away from the crowds.",
"h1": "Private Tours in Switzerland",
"intro": "Three personal guides, one unhurried country.",
"sections": [
{ "heading": "How it works", "paragraphs": ["..."], "bullets": ["..."] }
],
"faqs": [{ "q": "How many guests?", "a": "Usually two to six." }]
},
"updated_at": "2026-09-05T07:41:00.000Z"
}
}
}Update CMS page content
update_page · Admin only
Merges top-level fields into a landing page's stored content. Changes appear on the live page immediately.
Parameters
- slug — string (required)
- Page slug to update.
- fields — object (required)
- Top-level fields such as metaTitle, metaDescription, h1, intro, sections, faqs.
Example request
{
"name": "update_page",
"arguments": {
"slug": "private-tours-switzerland",
"fields": {
"metaTitle": "Private Tours in Switzerland | deep.swiss",
"intro": "Three personal guides, one unhurried country."
}
}
}Example response
{
"structuredContent": {
"page": {
"slug": "private-tours-switzerland",
"data": {
"metaTitle": "Private Tours in Switzerland | deep.swiss",
"intro": "Three personal guides, one unhurried country.",
"h1": "Private Tours in Switzerland"
},
"updated_at": "2026-09-08T17:25:10.000Z"
}
}
}Errors
Failed calls come back as an error result with a short message, for example when you are not signed in, a slug or draft id does not exist, or your account lacks admin access.
{
"isError": true,
"content": [{ "type": "text", "text": "No page stored for slug \"tours\"." }]
}