Model Context Protocol

Give your coding agent your event contracts.

Connect suky to Claude Code, Cursor, or any MCP client and your agent can read your event schema, check contract health, validate tracking before it ships, and open the fix — all scoped to one workspace, over Streamable HTTP.

POSThttps://mcp.suky.ai/v1/mcp
PRO26 toolsStateless · workspace-scopedBearer API key · read-only keys supported
01

Add to your client

Pick your agent. One-click where the client supports a deep link; otherwise drop the config into your repo — it's the same JSON the in-app Install kit generates.

.mcp.json — repo root
{
  "mcpServers": {
    "suky": {
      "type": "http",
      "url": "https://mcp.suky.ai/v1/mcp",
      "headers": { "Authorization": "Bearer ${SUKY_API_KEY}" }
    }
  }
}

Commit-safe: reference ${SUKY_API_KEY} so the key stays out of the repo. Claude Code reads .mcp.json at the root automatically.

02

Authenticate with a workspace key

No OAuth dance, no separate MCP credential — every call carries a workspace API key as a Bearer token. Keys are created in Settings → Connections → MCP Server.

1

Create a key — pick a scope

Hand agents that only need to look around a read-only key; give write access only when the agent should open PRs or change contracts.

Read-only
18 tools · query, validate, guide
Read & write
all 26 · +PRs, contracts, publish
2

Reference it as an env var

Don't commit the raw key. Export it and point the config header at the variable — the Install kit emits this form by default.

export SUKY_API_KEY=sk_ws_•••••••

"Authorization": "Bearer ${SUKY_API_KEY}"
03

Available tools

annotations from the live server

Every tool declares MCP annotations, so your client knows what's safe to auto-run and what needs a human.

Explore & diagnose
list_eventsList events — filter by category, state, health, has-contract.
Read-only
search_eventsSemantic + name search across your event catalog.
Read-only
get_eventFull schema for one event: properties, triggers, linked issues.
Read-only
validate_eventCheck a name + properties against the schema.
Read-only
get_events_by_ticketEvents linked to a Linear / Jira / GitHub ticket.
Read-only
list_contractsBrowse quality contracts and their status.
Read-only
get_contractOne contract's volume / freshness / null-rate expectations.
Read-only
search_contractsFind contracts by event or keyword.
Read-only
list_violationsOpen contract violations across the workspace.
Read-only
get_violationThe full record for one violation.
Read-only
get_lineagedbt model lineage for an event. · needs dbt
Read-only
check_event_healthTrust verdict: volume trend, freshness, null rates, violations.
Read-only
explain_violationRule breached, observed vs threshold, likely deploy, suggested action.
Read-only
get_workspace_setupWhich integrations are connected — so tools don't dead-end.
Read-only
Author tracking
get_sdk_snippettrack() snippet for an existing event, any SDK.
Read-only
draft_sdk_snippettrack() snippet for a NEW event from inline properties.
Read-only
get_implementation_guideFull guide: schema, snippet, triggers, lifecycle warnings.
Read-only
validate_trackingPre-flight CI-parity check — breaking change? open violations?
Read-only
Manage contracts & violations
create_contractAuthor a quality contract for a detected event.
Writes
update_contractEvolve an existing contract.
WritesIdempotent
propose_contractFile a DRAFT contract for a human to review.
Writes
resolve_violationMark a violation resolved.
WritesIdempotent
revalidate_workspaceRe-run validation across the workspace now.
WritesIdempotent
Ship changes
open_fix_prOpen a GitHub PR that fixes a violation.
WritesExternal
open_implement_prOpen a GitHub PR that implements an event.
WritesExternal
publish_to_registryPublish a schema to Segment / RudderStack / Snowplow / mParticle.
WritesExternalDestructive
04

It ships with the workflow, not just the tools

prompt · instrument_event

The discover-first protocol, in-protocol

suky registers an MCP prompt — discoverable via prompts/list even in a repo with no AGENTS.md — that teaches the agent the right order of operations:

  1. Find the canonical event before writing any track().
  2. Validate against the contract, then never weaken it.
  3. Propose a draft for review when the event is new.
  4. Zero ingestion — schemas only, never event data.
▸ you    add tracking for checkout_started

▸ agent  search_events "checkout"
       → checkout_completed (active)
       validate_tracking checkout_started
       → no_match · new event
       draft_sdk_snippet checkout_started
       → analytics.track("checkout_started",…)
       propose_contract → draft filed

✓ shipped to spec, contract proposed
05

What it costs

1 credit
per tools/call. Charged only when a tool actually runs — an unknown tool or a bad call is free.
0 credits
for handshakes — initialize, tools/list, ping never draw down.
60 / min
per-key rate limit, independent of credits. Read-only keys never touch the write path.