sheepit-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DO_NOT_TRACK | No | Set to 1 to disable telemetry. Cross-vendor convention. | |
| SHEEPIT_API_KEY | No | API key for authentication. Used as fallback if ~/.sheepit/credentials.json is not present. | |
| SHEEPIT_API_URL | No | Base URL for the Sheepit API. (Optional, defaults to api.goatech.ai) | |
| SHEEPIT_PROFILE | No | Profile identifier. Used as fallback if ~/.sheepit/credentials.json is not present. | |
| SHEEPIT_TELEMETRY | No | Set to 0 or false to disable Sheepit-specific telemetry. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sheepit_helpA | Returns a curated overview of what this MCP server can do, or a deep-dive on a specific area. Call this WITHOUT a topic when the user asks 'what can I do?' / 'how do I get started?' / 'what is Sheepit?' (or the Spanish equivalents — '¿qué es sheepit?' / '¿qué puedo hacer?' / '¿qué herramientas tiene sheepit?'). Call WITH a topic when the user asks about a specific area (campaigns, destinations, dashboards, insights, feedback, credentials). Pass |
| sheepit_quickstartA | Returns a step-by-step recipe naming the exact tool calls to chain for a specific goal. Use when the user has a clear intent ('send a marketing email', 'analyze the signup funnel', 'wire a webhook' — or in Spanish 'enviar un email de marketing', 'analizar el funnel de signups', etc.). Pass |
| event_catalog_canonicalA | Returns the events GoaTech understands out of the box (so they appear in pre-built dashboards / templates without manual rework) merged with the project's own registered custom events. Call this BEFORE writing any new |
| group_listA | List user groups in the current project. Cursor-paginated, with optional free-text search across key and name. Use this BEFORE group_create to confirm the group doesn't already exist. |
| group_createA | Create a new user group in the current project. Group keys are snake_case slugs unique per project. After creating, add members with |
| group_add_memberA | Add a user to a user group, by user UUID OR email. Provide exactly ONE of |
| group_remove_memberA | Remove a user from a group by group id + user id. Returns 404 if the user wasn't a member. Idempotent in spirit — caller can treat 404 here as 'already gone' rather than an error. |
| campaign_listB | List campaigns in the current project. Supports cursor pagination, status filter, free-text search across name/key/goal. |
| campaign_getA | Fetch a single campaign by id with full audience / channels / creative / metric / budget / schedule / status. |
| campaign_createC | Create a new campaign in |
| campaign_updateA | Patch a campaign. ALLOWED only in |
| campaign_previewA | Dry-run the campaign and return the launch plan + a single-use |
| campaign_launchA | Move a campaign from draft|paused → scheduled|running. REQUIRES a fresh |
| campaign_pauseC | Pause a scheduled or running campaign. Pause is reversible via campaign_resume. |
| campaign_resumeA | Resume a paused campaign (paused → running). Re-validates launchability — empty audience / channels / creative / metric will reject. |
| campaign_completeA | Move a scheduled / running / paused campaign to |
| campaign_archiveA | Archive a completed (or never-launched draft) campaign. Removes it from the default list view but keeps history. |
| campaign_resultsA | Fetch the latest results snapshot for a campaign. v1 only stores the latest aggregate (impressions, clicks, conversions, by_channel, by_variant); time-series snapshots land with the destinations framework. |
| destination_catalogA | Read-only enumeration of every destination adapter the server currently knows about (webhook, resend, etc.). Use this to discover which |
| destination_listA | List destination configs installed in the current project. Filter by connector_id (e.g. only Resend installs) or status (active|paused|failed). |
| destination_getA | Fetch a single destination config by id with the full saved config + filters + last delivery state. |
| destination_createA | Install a destination adapter into the current project. |
| destination_updateA | Update name / config / filters / status of an existing destination. Status transitions allowed: active ↔ paused (the "failed" state is system-set after consecutive delivery errors and cannot be set manually). Trinary semantics for nullable fields: omit = preserve, send a new value to overwrite. |
| destination_deleteA | Soft-delete a destination — it stops being eligible for campaign dispatch but its history (audit log of past deliveries) is retained. |
| destination_testA | Run the adapter's connection check against the saved config. For webhooks: GETs the URL to verify it's reachable. For Resend: lists domains with the API key to verify auth. Does NOT send a real campaign payload. |
| dashboard_listA | List every dashboard installed in the current project (excludes archived). Returns id / name / description / created_at per row. Use dashboard_get for the full widget list. |
| dashboard_getA | Fetch a single dashboard by id, including the full widget list (each with its query, viz, and position). Use this to understand what's on a dashboard before editing it. |
| dashboard_createA | Create an empty dashboard with |
| dashboard_updateA | Update name / description / layout of an existing dashboard. Trinary semantics for nullable fields: omit = preserve, send |
| dashboard_deleteA | Soft-delete a dashboard — it stops appearing in dashboard_list but its history is retained. Templates can't be deleted. |
| dashboard_template_listA | Read-only enumeration of every starter dashboard the platform ships with. Returns id / name / tagline / description / icon / widget_count per template. Use dashboard_template_get(id) to retrieve the full widget specs, then materialize via dashboard_create + widget_create calls. |
| dashboard_template_getA | Returns the full blueprint for a template (id, name, description, icon, full widgets array with each query + viz + position). Use this to fetch the recipe, then call dashboard_create + a widget_create per item to materialize it. Returns 404 if the template id is unknown. |
| widget_createA | Create a new widget on the given dashboard. |
| widget_updateB | Update name / description / position / query / viz of a single widget. Trinary semantics for nullable fields. For bulk position changes (drag/drop save), prefer the dashboard layout endpoint at the API level — this tool is for one-widget edits. |
| widget_deleteA | Hard-delete a widget. The dashboard remains; only this single widget is removed. |
| insights_queryA | Execute a one-shot InsightsQuery without saving it as a widget. Use this to answer questions like 'how many signups yesterday?' / 'errors-per-hour by app version this week?' / 'which utm_source converted best in the last 30 days?'. Input envelope: |
| release_listA | List releases newest-first with each release's CURRENT pre-computed health verdict (healthy/degraded/critical/unknown) and crash-free + error + latency rates. The verdict is computed server-side — read health_status, do not recompute it from the rates. Filter by platform, channel, or status (status='active' means deployed to production). Supports cursor pagination: pass cursor from pagination.cursor to fetch the next page. Use release_health for the full four-signal breakdown of one release, and release_regressions to find releases that got WORSE. |
| release_healthA | Return the full pre-computed health verdict and all four signals (crash-free, error rate, p95 latency, conversion) for ONE release, plus code context (commit SHA, PR number, PR title, branch, commit count) and the delta vs the prior release. health_status and health_score are authoritative — narrate them, never derive your own verdict from the individual rates. conversion_rate may be null when business metrics are not instrumented for this project; do not treat null as 0%. |
| release_regressionsA | List releases that REGRESSED (crash-free rate dropped past the server's significance gate), newest-first, optionally since a timestamp. kind='release' means the release degraded vs the prior release; kind='change' means it degraded right after a specific flag/config change (see change_entity_key). The drop is detected server-side — report crash_free_delta as given, do not recompute it. crash_free_delta of 0 on a kind='change' entry may mean the delta was not computable — check pre/post_crash_free_rate to confirm before treating 0 as a true no-change reading. Use release_health(release_id) to investigate a specific regression in depth. |
| feedback_submitA | File a bug report, feature request, or general note for the Sheepit team. The friction barrier between 'this is annoying' and 'report filed' is one tool call — use it. Call this proactively when the user expresses frustration ('this is confusing', 'I wish I could…', 'it should…'), when a tool returns a confusing error, or when you hit an obvious gap (a missing connector, a missing widget type, an unclear field name). Always confirm with the user before calling — quote their words back so the message is their voice, not yours. Returns the feedback id and createdAt timestamp. The MCP auto-stamps source/version metadata; you only supply type + message. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sheepit-ai/sheepit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server