Skip to Content
Zeotap AgentMCP Server

MCP Server

Zeotap exposes its capabilities through a Model Context Protocol (MCP) server, enabling external AI tools to interact with your CDP programmatically.

Overview

The MCP server runs alongside the control plane and provides a standardized interface for AI agents to discover and use Zeotap tools. This allows integration with Claude Desktop, Cursor, and any other MCP-compatible client.

Available Tools

The MCP server registers 107 tools, of which the 100 documented here are generally available — the rest seed demo data and are granted only to demo accounts. They span every CDP surface — schema inspection, audience and computed-attribute authoring, audience canvases, identity resolution, per-profile and per-record reads, realtime events, orchestrations, stores, event streams, and direct warehouse access. Tools are grouped below by domain.

Schema

ToolDescription
list_modelsList all data models in the workspace, including columns, primary keys, entity types, and source references.
get_modelGet detailed information about a specific model — columns, types, primary key, entity type, SQL, and column_config (sensitivity, PII types, aliases).
list_relationshipsList all entity relationships (joins) connecting parent, related, and event models in the workspace.
list_traitsList all computed attributes (aggregated values) defined on parent or related models in the workspace.

Audiences

ToolDescription
list_audiencesList all audiences in the workspace, with name, parent model, filter tree, estimated size, and status.
get_audienceGet an audience’s full filter tree, parent model, estimated size, and sync status.
estimate_audience_sizeEstimate the row count matching a filter tree against a parent model without creating an audience.
validate_filter_nodeValidate a FilterNode JSON structure for correctness without executing it.
compile_filterCompile a FilterNode tree into SQL and return the estimated size; useful before saving an audience.
create_audienceCreate a new audience from a FilterNode tree. The filter is validated and compiled before saving.
update_audienceUpdate an existing audience’s name, description, filter tree, or status. Only provided fields change.

Audience Canvases

ToolDescription
list_audience_canvasesList all audience canvases in the workspace, with parent model, audience count, and when each was last published.
get_audience_canvasGet a canvas’s draft nodes and edges, its published version, and its parent model.
validate_canvas_changesetValidate proposed nodes and edges before saving or publishing — cycles, unwired tiles, missing audience names.
create_audience_canvasCreate a new, empty canvas on a parent model, optionally routed through an identity graph.
update_canvas_draftReplace a canvas’s draft nodes and edges. Autosaved and visible in the editor; nothing is published yet.
publish_audience_canvasPublish the current draft, compiling every Create Audience tile and materialising the audiences it owns.

Computed Attributes

ToolDescription
create_traitCreate a new computed attribute on a parent entity model; it is computed on read wherever it is referenced.
update_traitUpdate a computed attribute’s name, description, configuration, result type, or status. Only provided fields change; setting the status publishes or unpublishes it.
trigger_trait_evaluationTrigger an optional manual refresh of computed attributes for a parent model and return a run ID for tracking. Not required — computed attributes are computed on read.

Models & Schema (Write)

ToolDescription
create_modelCreate a model from a warehouse table or custom SQL. Columns auto-infer; entity_type and primary_key_column are required.
update_modelUpdate an existing model’s name, description, columns, SQL, entity type, or status.
update_column_configSet per-column sensitivity levels, PII types, display aliases, and enabled state. Fields an entry omits keep their stored values.
update_column_descriptionsDescribe what a model’s columns mean (partial update). Never replaces a description a user, the warehouse or a blueprint wrote unless overwrite is set. See Column Descriptions.
create_relationshipCreate a relationship (join) between two models, enabling event and relation conditions in audience filters.

Sources & Warehouses

ToolDescription
list_sourcesList all configured data sources (input warehouses) in the workspace, with type, connection config, and status.
introspect_sourceList all database schemas available in a source connection.
list_tablesList all tables in a specific schema of a source connection.
list_columnsList all columns in a specific table, including name, data type, and nullability.
get_warehouse_contextGet the full data model context — models, columns, relationships, computed attributes, event schema, and system tables. Use before writing warehouse SQL.
query_warehouseExecute a read-only SQL query against a data warehouse. SELECT only, capped at 500 rows.
write_warehouseExecute a write SQL statement (INSERT, UPDATE, CREATE TABLE). DELETE, DROP, ALTER, TRUNCATE are blocked.

Destinations & Syncs

ToolDescription
list_destinationsList all configured destinations (output targets), with type, connection config, and status.
create_destinationCreate a new destination (Snowflake, BigQuery, Databricks, webhook, etc.) for syncing audience or model data.
list_syncsList all Reverse ETL syncs in the workspace — model, destination, field mapping, mode, schedule, and status.
list_audience_syncsList all audience syncs — audience, destination, field mapping, mode, schedule, status, and Audience Boost config.
create_audience_syncCreate a new audience sync linking an audience to a destination, with field mapping, sync mode, and schedule. Optionally enables Audience Boost.
trigger_syncTrigger a Reverse ETL sync to execute immediately. Returns the sync run ID.
trigger_audience_syncTrigger an audience sync to execute immediately. If Audience Boost is enabled, runs dual pipelines and reports per-identifier metrics.
list_sync_runsList recent runs for a model sync or an audience sync (newest first) — status, timing, row counts, batch counts, and errors.
get_sync_runGet the status and metrics of a single sync run. Use it to poll a run started by trigger_sync or trigger_audience_sync.

Loaders

ToolDescription
list_loadersList all loaders (inbound ELT connectors) — type, source, target schema, streams, schedule, status, and last-run summary.
list_loader_runsList recent load runs for a loader (newest first) — status, timing, rows loaded, per-stream counts, and errors.
get_loader_runGet the status and metrics of a single load run.

Stores

Store tools are only available on workspaces where Stores is enabled.

ToolDescription
list_storesList all stores in the workspace, with primary index and status.
get_storeGet a single store by ID.
list_store_feedsList the feeds attached to a store — model, field mapping, deletion behaviour, schedule, and last refresh.
list_store_feed_runsList a feed’s recent refresh runs, with rows added, updated and deleted, status, and any error.
create_storeCreate a store. The primary index is the row key and cannot be changed afterwards.
archive_storeArchive a store. Its feeds stop running.
create_store_feedAttach a feed that mirrors one parent-entity model into the store.
update_store_feedRename, reschedule, or remap a feed, or change its deletion behaviour.
delete_store_feedDelete a feed. Data already written to the store is not removed.
trigger_store_feedRefresh a feed immediately. Returns the run ID.
resume_store_feedResume a feed that auto-paused after repeated failed refreshes.

Identity Resolution

ToolDescription
list_identity_graphsList all ID graphs in the workspace.
get_identity_graphGet the full configuration of an ID graph — metadata plus models, identifiers, merge rules, limits, and probabilistic rules.
create_identity_graphCreate a new ID graph with full configuration in one call.
update_identity_graphUpdate an ID graph’s metadata. Only provided fields change.
configure_identity_graph_rulesConfigure models, identifiers, merge rules, limit rules, and probabilistic rules for an ID graph (partial update).
delete_identity_graphDelete an ID graph permanently — definition, models, identifiers, rules, run history, and golden-record configs.
list_identity_graph_runsList recent resolution runs for an ID graph (newest first) with status, timing, and metrics.
get_identity_graph_runGet details for a specific ID graph resolution run.
trigger_identity_graph_runTrigger or cancel an ID graph resolution run.
explore_identity_graphLook up a resolved profile by an identifier value — returns the unified profile (ss_id) and all source rows.
configure_golden_recordCreate or update the golden-record configuration (survivorship rules) for an ID graph.
get_golden_recordRead a unified profile’s golden record by ss_id or by identifier, with the attribute definitions and source ranking behind each value.

Profiles and Records

Resolved-profile tools read through an identity graph; the two record tools answer the same per-customer question in a workspace that has models and relationships but no graph.

ToolDescription
get_profile_membersReturn the source rows of one model that belong to a resolved profile (ss_id), with their column values — the records behind a cluster.
get_profile_relatedFollow one registered relationship out from a profile and return the related model’s rows — a customer’s orders, tickets, subscriptions.
get_profile_lineageExplain why a profile’s records merged: the identity edges inside the cluster, which rows were linked, on which identifier, at what confidence.
get_golden_record_lineageExplain, attribute by attribute, where a profile’s golden-record values came from — the candidate values each ranked source holds.
get_model_recordRead one row of a model by its primary key, with its visible column values — the per-customer view without an identity graph.
get_model_record_relatedFollow one registered relationship out from a single model record and return the related rows, without an identity graph.

Realtime Events

ToolDescription
list_realtime_eventsList all realtime events in the workspace — stream-sourced related events declared on a parent model.
list_model_realtime_eventsList the realtime events declared on one parent model, to see what a realtime audience condition can already reach.
get_realtime_eventGet one realtime event, including its event source, event type, parent relationship, and its filterable property catalog.
create_realtime_eventDeclare a realtime event on a parent model, bound to the existing event-ingest spine.
update_realtime_eventUpdate a realtime event’s editable fields. Only provided fields change.
delete_realtime_eventDelete a realtime event. Refused, naming the audiences, while any audience filter still references it.

Orchestrations

ToolDescription
list_journeysList all orchestrations in the workspace. Each orchestration is a DAG of tiles defining a multi-step engagement flow.
get_journeyGet full details of an orchestration — tiles, edges, entry/exit criteria, schedule, status, and last run info.
create_journeyCreate a new orchestration (starts in draft status).
update_journeyUpdate an orchestration’s name, description, tiles, edges, or schedule. Only provided fields change.
delete_journeyDelete an orchestration permanently. Warehouse tables created during activation are not auto-deleted.
validate_journeyValidate the DAG structure — cycles, dangling edges, missing tiles, schedule correctness.
activate_journeyActivate an orchestration (draft/paused -> active), provisioning warehouse tables and scheduling.
pause_journeyPause an active orchestration. Existing member state is preserved.
resume_journeyResume a paused orchestration. Evaluation continues from where it left off.
trigger_journeyManually trigger an evaluation run for an active orchestration.
list_journey_runsList recent evaluation runs for an orchestration with status, timing, and per-tile metrics.
get_journey_runGet details for a specific orchestration run, including evaluation metrics.
cancel_journey_runCancel a pending or running orchestration evaluation.

Event Streams

ToolDescription
list_event_keysList all event source write keys in the workspace, with name, value, status, topic, and last-used timestamp.
get_event_volumeGet hourly event volume metrics for the workspace over the last 7 days, grouped by event type and name.
list_event_contractsList all event contracts — schemas, enforcement modes, and undeclared-field handling.
list_event_contract_violationsList event contract violations — type, field path, expected vs received values, sample event ID, count.
list_event_forwarding_rulesList event forwarding rules — destination, event filter, transformation, field mapping, consent, rate limit.
list_event_transformationsList event transformations — JavaScript functions that modify event payloads before forwarding.
get_event_warehouse_configGet the event warehouse configuration — source ID, schema, staging bucket, and enabled status.

Anomalies

Read-only access to what anomaly monitoring found in the workspace. There is no write counterpart — an MCP client cannot open, dismiss or resolve an anomaly.

ToolDescription
list_anomaliesList anomalies found by the background monitor, newest first — metric, resource, observed vs usual, severity, open or resolved, and the root-cause analysis once written. Filter by state, resource type or resource.
get_anomalyGet one anomaly with the evidence its analysis was written from: the resource’s status and dependencies, recent runs and most frequent errors, other anomalies open at the same time, and — for an event-volume drop — which events fell. Audit-log entries (who changed what) are never returned to an MCP client.

Utility

ToolDescription
check_approval_statusCheck the status of a pending guardrail approval. Use this when a previous tool call returned pending_approval.
get_workspace_memoryRetrieve durable facts learned about this workspace — naming conventions, quirks of the data model, pitfalls hit before, team preferences.

Authentication

The MCP server authenticates requests using API keys.

  1. In the Zeotap UI, open API Keys under Governance in the left sidebar and select the AI API Keys tab.
  2. Click Create API Key, give it a name, and select the scopes your MCP client needs (see Scopes below). A key needs at least one scope.
  3. Copy the generated key — it starts with sk_ and is shown only once. Store it securely; if you lose it, revoke and regenerate.
  4. Configure your MCP client to send the key as a bearer token in the Authorization header.

The workspace your tool calls run against is derived from the API key itself — there is no separate workspace header.

Scopes

Each MCP tool requires a specific scope on the API key. Grant the minimum set your client needs:

CapabilityRequired scope
Read models, relationships, and warehouse contextread:schema
Read computed attributesread:trait
Create or modify computed attributeswrite:trait
Read audiences and canvases, estimate sizes, validate filtersread:audience
Create or modify audiences, canvases, and audience syncswrite:audience
Read syncs and destinations, sync run history, and anomaliesread:sync
Trigger sync runstrigger:sync
Read connected warehouses and loaders, introspect tables and columns, and read loader run historyread:source
Create or modify models and relationshipswrite:model
Configure destinationswrite:destination
Read identity graphs, resolved profiles, and profile lineageread:identity
Modify identity graphs and golden-record ruleswrite:identity
Read orchestrationsread:journey
Modify orchestrationswrite:journey
Trigger orchestration runstrigger:journey
Read event streamsread:event
Read realtime eventsread:realtime_event
Create or modify realtime eventswrite:realtime_event
Run read-only warehouse queriesquery:warehouse
Run warehouse write statementswrite:warehouse
Read stores and feedsread:store
Create or modify stores and feedswrite:store
Trigger or resume feed refreshestrigger:store

A tool call returns an authorization error if the matching scope is missing. check_approval_status, get_workspace_memory, get_model_record and get_model_record_related are all covered by read:schema.

These scopes govern MCP tool calls only. None of them authorises an HTTP read: the Profile API takes its own svk_ serving key and the Membership API a public pk_ membership key, and an sk_ key is refused on both.

Two scopes are worth granting deliberately rather than as part of a broad selection: query:warehouse lets a client read any table the warehouse connection can reach, and write:warehouse lets it write to that warehouse directly. Unlike the other scopes, neither is bounded to a resource Zeotap manages. Access policies are given to the client as context to apply, not enforced on the query itself, so a warehouse scope is only as narrow as the warehouse credentials behind it. Grant them to clients you would trust with those credentials, and use guardrails to constrain what the agent does with them.

Integration with Claude Desktop

The Zeotap MCP server speaks JSON-RPC over HTTP, which Claude Desktop cannot connect to directly — it expects a stdio transport. Bridge the two with the mcp-remote proxy (no install needed; npx fetches it on demand).

Add the following block to your Claude Desktop claude_desktop_config.json:

{ "mcpServers": { "zeotap": { "command": "npx", "args": [ "-y", "mcp-remote", "https://mcp.zeotap.com/mcp", "--header", "Authorization:${AUTH_HEADER}" ], "env": { "AUTH_HEADER": "Bearer YOUR_API_KEY" } } } }

Replace YOUR_API_KEY with the key copied at creation time, then fully quit and restart Claude Desktop. The ${AUTH_HEADER} indirection keeps the Bearer prefix intact — passing the full header value directly inside args triggers a Claude Desktop bug that splits the string on whitespace.

The same mcp-remote config works for any MCP-compatible client that supports stdio servers (Cursor, Cline, etc.). Clients that already implement the MCP Streamable HTTP transport can connect to https://mcp.zeotap.com/mcp directly, sending the API key as Authorization: Bearer YOUR_API_KEY.

Available Resources

The MCP server also exposes resources that provide structured context to AI agents:

ResourceDescription
zeotap://schema/modelsAll data models with columns, primary keys, entity types, and sensitive-column metadata for PII-safe querying.
zeotap://schema/relationshipsEntity relationship graph — how parent, related, and event models connect via foreign keys.
zeotap://schema/traitsAll computed attribute definitions in the workspace, with types and parent models.
zeotap://schema/filter-node-specThe JSON Schema defining the FilterNode structure used for audience filter trees.
Last updated on