MCP Playground
This is what an AI agent sees when it talks to a Voyager site. Pick a tool, read the request we are about to send, fire it, and read the response — unedited, in whatever shape the tool actually returns.
Every tool here is read-only and whitelisted server-side. Your browser never talks to the Voyager MCP surface directly — it posts a tool name to this site, and this site does the rest. That is not a demo shortcut; it is how the boundary is supposed to work, and it is why no Voyager MCP endpoint or token appears anywhere in this page’s source — the only route you will find is this site’s own public REST path.
Recorded The demo-scoped public endpoint has not shipped yet, so every response below is a real one captured earlier — not a call happening now. Pressing Run makes a genuine request to this site and returns the recording. Nothing is simulated and no latency is invented; when the endpoint goes live, one config value flips this page to real calls and the copy here changes with it.
Enumerate every block binding source registered on this site — core, Voyager, and anything a plugin added — with the context each one needs to resolve.
The request
POST /demo/tools/call
{
"tool": "blocks_get_binding_sources"
}
What it reads
The binding registry. No post content, no options, no visitor data.
Why this one is here
This is the call behind the bindings showcase. A binding source is how a block pulls its text from somewhere other than the post: site options, post meta, Notion, an A/B bucket, a geo lookup. Read the list to the end and the last entry is voyager/pulse — a source this theme registers itself, in functions.php, for the live-stats pattern. The site is reporting a capability it created, which is the only kind of answer worth trusting.
Recorded against voyager-demo.test (local build) on 2026-07-27.
Aggregate binding resolution telemetry for the last 7 days: how many bindings resolved, how many fell back, and which sources did the work.
The request
POST /demo/tools/call
{
"tool": "blocks_get_binding_stats",
"arguments": {
"site_id": "v3.voyagermark.com",
"days": 7
}
}
What it reads
Aggregate counters only. No per-visitor rows, no PII.
Why this one is here
The number that matters is fallback_count. A binding that cannot resolve renders its static fallback instead and the page still looks fine — which is exactly why silent fallbacks go unnoticed for months. Counting them is how you find out. On this recording, 132 of 309 resolutions fell back. Note that this request names a different site: telemetry needs traffic, and a freshly seeded demo install honestly reports zeroes, so it asks a site that has some.
Recorded against v3.voyagermark.com on 2026-07-27.
Query posts of any type — including custom post types — by status, taxonomy, meta, or date. Works over the REST surface: no WP-CLI, no SSH, no host-specific access.
The request
POST /demo/tools/call
{
"tool": "wp_list_posts",
"arguments": {
"post_type": "vd_showcase",
"per_page": 3,
"orderby": "menu_order",
"order": "ASC"
}
}
What it reads
Published vd_showcase entries, as configured in the request below. Titles, slugs, dates, excerpts, permalinks.
Why this one is here
The unglamorous one, and the one that makes the rest possible: an agent that can enumerate content can audit it, refresh it, cross-link it, or report on it. This request asks for vd_showcase, a post type this theme registers, and gets back the showcase entries you can navigate to from the nav — so the site is listing its own pages. Watch the tail of the response too: total 9 and pages 3 against per_page 3. A careful agent reads those and asks for page 2; a careless one assumes it received everything and silently works from a third of the data.
Recorded against voyager-demo.test (local build) on 2026-07-27.
List installed themes with versions, parent relationships, and pending updates.
The request
POST /demo/tools/call
{
"tool": "wp_get_theme_details"
}
What it reads
Theme headers and update status. No file contents, no credentials.
Why this one is here
Proof that the architecture contract is real and not a diagram. The response is this site describing its own stack: voyager-block-theme sitting inactive as the parent, carrying a description that says it "ships structural font-size and spacing scales but no color palette and no font families", and voyager-demo active on top of it as the child that supplies the brand. The parent genuinely has no palette — that is the contract, and you can read it from the outside without taking our word for it.
Recorded against voyager-demo.test (local build) on 2026-07-27.
The response appears here, unedited and unformatted beyond indentation.
Four tools is a curated slice, not the surface area. The abilities page enumerates every ability registered on this site — currently well over a hundred — with full input and output schemas, read live from the registry on each change.