Skip to main content

MCP servers

walkerOS provides Model Context Protocol servers for AI assistant integration.

PackagePurpose
@walkeros/mcpFlow development: tools, reference resources, guided prompts, cloud API
@walkeros/mcp-source-browserHTML tagging: generate, parse, and validate data-elb attributes

Claude Code plugin

The recommended way to get started in Claude Code. One plugin installs both MCP servers and 18 skills that teach Claude how to build sources, destinations, transformers, and flows.

Step 1: add the marketplace:

/plugin marketplace add elbwalker/walkerOS

Step 2: install the plugin:

/plugin install walkeros@elbwalker-walkerOS

That's it. Claude Code will reload with the MCP tools and skills active.

Quick start

For Claude Desktop or other MCP clients, add servers to your configuration manually:

Loading...

Each server starts on STDIO and registers its tools automatically.

Environment variables

VariableUsed byRequiredDefaultPurpose
WALKEROS_TOKENmcpNononeBearer token fallback (alternative to auth tool login)
WALKEROS_PROJECT_IDmcpNononeActive project ID (proj_...)
WALKEROS_APP_URLmcpNohttps://app.walkeros.ioBase URL override

@walkeros/mcp-source-browser works without any environment variables. All tools are always registered. To authenticate with the walkerOS cloud, use the auth tool (device code flow) or set WALKEROS_TOKEN as a fallback.


@walkeros/mcp (flow development)

Unified server for flow development, package discovery, reference resources, guided prompts, and cloud API. Replaces the previous separate @walkeros/mcp-cli and @walkeros/mcp-api packages.

Installation

Loading...

Programmatic usage

@walkeros/mcp exports a transport-agnostic server factory so host applications can mount the MCP protocol over HTTP (e.g., from a Next.js Route Handler) instead of running the stdio binary:

Loading...

To use the raw tool registry without the MCP protocol (e.g., with the Vercel AI SDK), import `TOOL_DEFINITIONS` and provide your own `ToolClient` implementation. The stdio binary stays available via `@walkeros/mcp/stdio` and the `walkeros-mcp` bin entry, unchanged for end users.

Tools

flow_load

Load an existing flow configuration from a local file path, URL, inline JSON, or the walkerOS API, or create a new empty flow by specifying a platform.

ParameterTypeRequiredDescription
sourcestringNoFlow source: file path, URL, inline JSON, or API flow/config ID (flow_... / cfg_...). Omit to create new.
platform"web" | "server"NoPlatform for new flows. Required when source is omitted.

Passing a flow_... or cfg_... ID loads that flow from the API (the same source flow_manage reads from). Returned configs are round-trip safe: structural values such as package names, platform, and IDs come back literally, so a loaded config can be edited and sent straight back to flow_manage({ action: "update" }) without altering anything you did not change.

flow_validate

Validate walkerOS events, flow configurations, mapping rules, or data contracts.

ParameterTypeRequiredDescription
type"event" | "flow" | "mapping" | "contract"YesValidation type
inputstringYesJSON string, file path, or URL to validate
flowstringNoFlow name for multi-flow configs
pathstringNoEntry path for package schema validation

flow_bundle

Bundle a walkerOS flow configuration into deployable JavaScript.

ParameterTypeRequiredDescription
configPathstringYesPath to flow configuration file
flowstringNoFlow name for multi-flow configs
statsbooleanNoReturn bundle statistics (default: true)
outputstringNoOutput file path

flow_simulate

Simulate events through a walkerOS flow without making real API calls. Returns summarized per-destination results.

ParameterTypeRequiredDescription
configPathstringYesPath to flow configuration file
eventstring | objectYesEvent input (see shapes below). JSON string, file path, or URL also accepted.
stepstringYesTarget step as "type.name" (e.g. "source.demo", "destination.gtag", "transformer.router")
flowstringNoFlow name for multi-flow configs
platform"web" | "server"NoOverride platform detection
verbosebooleanNoInclude full payload per destination (default: false)

The event shape depends on the step type:

  • Destinations / transformers: a walkerOS event, { name: "entity action", data: {...} }. Add consent (e.g. { marketing: true }) when the destination requires it.
  • Sources: { content, trigger? }, where content is the walkerOS event { name, data } and the optional trigger is { type?, options? }. There is no env field in the source-step event.

Sources can be simulated as a step, including the @walkeros/source-demo demo source.

flow_push

Push a real event through a walkerOS flow to actual destinations. This makes real API calls. Best for server-side flows. Web destinations require browser globals not available in Node.js.

ParameterTypeRequiredDescription
configPathstringYesPath to flow configuration file
eventstringYesEvent as JSON string, file path, or URL
flowstringNoFlow name for multi-flow configs
platform"web" | "server"NoOverride platform detection

flow_examples

List all step examples in a walkerOS flow configuration.

ParameterTypeRequiredDescription
configPathstringYesPath to flow configuration file
flowstringNoFlow name for multi-flow configs
stepstringNoFilter to a specific step (e.g., "destination.gtag")
fullbooleanNoReturn full in/out/mapping data (default: false, metadata only)

Browse walkerOS packages or look up a specific one. Without package name: returns catalog filtered by type/platform. With package name: returns metadata.

ParameterTypeRequiredDescription
packagestringNoExact npm package name for lookup
type"source" | "destination" | "transformer" | "store"NoFilter by type (browse)
platform"web" | "server"NoFilter by platform (browse)
versionstringNoPackage version (default: latest)

In browse mode the tool returns the complete catalog. If it has to fall back to a partial source or omit packages, the response includes a warnings array explaining what is incomplete rather than silently returning a partial list.

package_get

Fetch walkerOS package details from npm. By default returns schemas + hint texts + example summaries. Use section parameter for full content.

ParameterTypeRequiredDescription
packagestringYesExact npm package name
versionstringNoPackage version (default: latest)
section"hints" | "examples" | "all"NoSection to expand with full content

diagnostics

Report the MCP runtime surface. Read-only, takes no parameters, and works even when logged out. Reach for it when a request fails, to see which versions and backend you are on. The response includes the MCP version, the CLI version, the resolved app URL and whether it came from WALKEROS_APP_URL or the default, app /api/health reachability, the bundled OpenAPI contract version, and which source served the last package catalog lookup.

This tool has no parameters.

auth

Authenticate with the walkerOS cloud. Uses device code flow — the user receives a URL to open in a browser to complete login.

ParameterTypeRequiredDescription
action"status" | "login" | "logout"YesAuth action
deviceCodestringNoDevice code from a previous pending login. Provide with action: "login" to resume polling without requesting a new code.

project_manage

Manage walkerOS projects in the cloud.

ParameterTypeRequiredDescription
action"list" | "get" | "create" | "update" | "delete" | "set_default"YesProject action
projectIdstringNoProject ID (proj_...). Required for: get, update, delete, set_default. Falls back to WALKEROS_PROJECT_ID env.
namestringNoName for create/update operations

flow_manage

Manage walkerOS flow configurations and previews in the cloud.

ParameterTypeRequiredDescription
action"list" | "get" | "create" | "update" | "delete" | "duplicate" | "preview_list" | "preview_get" | "preview_create" | "preview_delete"YesFlow action
projectIdstringNoProject ID (proj_...). Optional filter for list. Required for create if no default project set. Falls back to WALKEROS_PROJECT_ID env.
flowIdstringNoFlow ID (flow_...) or config ID (cfg_...). Required for: get, update, delete, duplicate, preview_list, preview_get, preview_create, preview_delete.
namestringNoFlow name. Required for create. Optional for update (to rename) and duplicate.
contentobjectNoFlow.Json content. Used for create and update.
patchbooleanNoMerge-patch for update (default: true). When true, only provided fields are updated.
fieldsstring[]NoDot-path selectors for get to return only specific fields.
sort"name" | "updated_at" | "created_at"NoSort field for list.
order"asc" | "desc"NoSort order for list.
includeDeletedbooleanNoInclude soft-deleted flows in list results.
previewIdstringNoPreview ID (prv_...). Required for: preview_get, preview_delete.
flowNamestringNoFlow settings name. Used by preview_create as an alternative to flowSettingsId.
flowSettingsIdstringNoFlow settings ID. Used by preview_create as an alternative to flowName.
sourceobjectNoWhat preview_create should run: { "kind": "draft" } (default) or { "kind": "deployment-version", "deploymentVersionId": "..." } to preview a deployed version's stored config ("preview what's live").
siteUrlstringNoOptional site URL for preview_create. When provided, the response includes full activationUrl and deactivationUrl the user can click.

Configs returned by get are round-trip safe: structural values (package names, platform, IDs) are returned literally, so a returned config can be edited and sent back to update unchanged.

deploy_manage

Deploy walkerOS flows and manage deployments.

ParameterTypeRequiredDescription
action"deploy" | "list" | "get" | "delete"YesDeployment action
flowIdstringConditionalFlow ID. Required for: deploy, get, delete. Optional filter for list.
slugstringNoDeployment slug. Optional disambiguator for get/delete when the flow has multiple active deployments.
projectIdstringNoProject ID. Optional; falls back to the default project.
type"web" | "server"NoDeployment type filter for list.
statusstringNoStatus filter for list.
waitbooleanNoWait for deploy to complete (default: true). Only used with deploy.
flowNamestringNoFlow name for multi-settings flows. Only used with deploy.

When a flow has more than one active deployment and no slug is supplied, get and delete return a MULTIPLE_DEPLOYMENTS error with a details[] list so the caller can pick a specific deployment. Soft-deleted deployments are always excluded.

{
"error": "Flow flow_abc has 2 active deployments; pass slug to disambiguate",
"code": "MULTIPLE_DEPLOYMENTS",
"details": [
{ "slug": "abc123456789", "type": "web", "status": "active", "updatedAt": "2026-04-20T00:00:00.000Z" },
{ "slug": "def987654321", "type": "web", "status": "active", "updatedAt": "2026-04-21T00:00:00.000Z" }
]
}

Resources

URIDescription
walkeros://reference/flow-schemaFlow.Json structure and connection rules
walkeros://reference/event-modelEvent naming, properties, auto-populated fields
walkeros://reference/mappingMapping syntax (data/map/loop/set/condition/consent/policy)
walkeros://reference/consentConsent model (destination/rule/field level)
walkeros://reference/variablesVariable patterns ($var/$env/$code/$store)
walkeros://reference/contractEvent schemas, wildcards, inheritance
walkeros://reference/openapiOpenAPI 3.1 specification
walkeros://reference/packagesFull package catalog
walkeros://schema/{packageName}Per-package JSON schemas

Prompts

PromptDescription
add-stepAdd a source, destination, transformer, or store to a flow
setup-mappingConfigure event mapping for a step
manage-contractCreate/update event contracts (bidirectional with mappings)

@walkeros/mcp-source-browser (HTML tagging tools)

Generate, parse, and validate walkerOS data-elb HTML attributes using real DOM parsing (JSDOM). No API token or CLI dependency required.

Installation

Loading...

Tools (3)

generate_tagging

Generate walkerOS data-elb HTML attributes from structured input. Returns attribute key-value pairs and an example HTML snippet.

ParameterTypeRequiredDescription
entitystringNoEntity name (creates data-elb="entity")
dataobjectNoEntity properties as key:value pairs
actionobjectNoTrigger:action pairs for data-elbaction (nearest entity)
actionsobjectNoTrigger:action pairs for data-elbactions (all entities)
contextobjectNoContext properties for data-elbcontext
globalsobjectNoGlobal properties for data-elbglobals
linkobjectNoLink relationships for data-elblink
prefixstringNoCustom prefix (default: data-elb)

At least one parameter must be provided.

parse_tagging

Parse HTML with data-elb attributes using real DOM parsing (JSDOM). Extracts all walkerOS events and globals.

ParameterTypeRequiredDescription
htmlstringYesHTML snippet with data-elb attributes
prefixstringNoCustom prefix (default: data-elb)

validate_tagging

Validate HTML data-elb tagging for common mistakes. Checks for orphan actions, missing entities, unknown triggers, orphan properties, and entities without actions.

ParameterTypeRequiredDescription
htmlstringYesHTML snippet to validate
prefixstringNoCustom prefix (default: data-elb)

Resources

URIDescription
walkeros://docs/tagging/html-attributesComplete guide to data-elb HTML attribute tagging
walkeros://docs/tagging/taggercreateTagger() fluent API reference

Example workflows

Create and validate a flow

Ask your AI assistant:

"Create a new web flow, add a GA4 destination, then validate it."

The assistant uses flow_load to create a skeleton, the add-step prompt to add GA4, and flow_validate to check the result.

Simulate events

"Simulate a page view event through my flow at ./flow.json."

The assistant calls flow_simulate and returns per-destination results showing which destinations received the event.

Deploy a flow

"Deploy flow cfg_abc123 and wait for it to finish."

The assistant calls deploy_manage({ action: "deploy", flowId: "cfg_abc123" }) and streams progress updates through bundling, publishing, and activation.

Preview a flow on a live site

"Create a preview of my demo settings on flow_abc123 and give me the link to open on https://example.com."

The assistant calls flow_manage({ action: "preview_create", flowId: "flow_abc123", flowName: "demo", siteUrl: "https://example.com" }) and returns the activationUrl the user clicks to activate preview mode on their site. Running flow_manage({ action: "preview_delete", … }) later removes the bundle; the production walker self-heals on visitors' next page load.

Set up event mapping

"Help me set up mapping for the gtag destination in my flow."

The assistant uses the setup-mapping prompt, reads the mapping reference resource, fetches package examples, and generates mapping rules.

Generate HTML tagging

"Generate data-elb attributes for a promotion entity with name 'Summer Sale' and a click action."

The assistant calls generate_tagging with entity: "promotion", data: { name: "Summer Sale" }, and action: { click: "click" }, returning ready-to-use HTML attributes.

Discover a package

"What configuration does the Snowplow destination need?"

The assistant calls package_search for @walkeros/web-destination-snowplow, then package_get to fetch schemas, hints, and examples.

Next steps

💡 Need implementation support?
elbwalker offers hands-on support: setup review, measurement planning, destination mapping, and live troubleshooting. Book a 2-hour session (€399)