Find revenue opportunities
Review my site’s audit findings and connected analytics. Which opportunities should we investigate first?
Tools: list_projects, get_growth_overview, query_ga4
Model Context Protocol
Mimetic connects AI assistants to website audits, analytics, advertising, and experiment results to identify revenue opportunities and implement reviewable improvements.
Connect the accounts you use, then ask about traffic, revenue, search, ad performance, visitor friction, and A/B test results. Tools operate on sites your Mimetic account can access.
Add this URL in a client that supports Streamable HTTP and OAuth:
https://mcp.trymimetic.com/mcp
Your client discovers OAuth 2.1, opens Mimetic sign-in, and asks you to approve access. It uses PKCE (S256); access tokens last an hour and can be refreshed. You can revoke access from your account.
npm install -g @mimeticinc/mim-cli
mim setup
Setup signs you in and registers MCP with supported installed clients: Claude Code, Codex, Cursor, Windsurf, and Claude Desktop. See the client setup guide and npm package.
Start with list_projects, choose your site, then call get_growth_overview. Connections and plan requirements are described by each tool. See pricing.
Review my site’s audit findings and connected analytics. Which opportunities should we investigate first?
Tools: list_projects, get_growth_overview, query_ga4
Compare landing-page revenue and sessions over the last 28 days with the previous period.
Review results from my connected experimentation platform and suggest what to test next.
Tools: query_experiments
Review recent recordings for recurring bugs and UX friction, with evidence for each proposed change.
Tools: review_recent_recordings
Check what tracking my site needs and explain the setup changes before making them.
Tools: get_connection_recommendations, setup_analytics, analytics_setup_status
After authenticating, this request asks for your connected site’s landing-page sessions and revenue. Replace your-site.com with a project returned by list_projects.
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"query_ga4","arguments":{"project":"your-site.com","metrics":["sessions","totalRevenue"],"dimensions":["landingPage"],"start_date":"28daysAgo","end_date":"yesterday"}}}
The response contains your requested GA4 report rows. Audit findings require verification, recording insights cover a consent-gated sample, and experiment conclusions depend on the connected provider’s measurements.
mcp:read allows project data and reports. mcp:write is required for setup and configuration actions. A connected provider may require its own consent. Tool calls enforce account, project, and plan access.
Use the descriptions below to understand each action before approving it. Code fixes use the Mimetic CLI or report workflow and produce work you can review. MCP returns recording summaries and redacted insights; it does not return raw replay event payloads.
OAuth resource metadata · Authorization server metadata · Privacy
These 41 definitions come from the same catalog as MCP tools/list. This page and its JSON version are public. Connecting to MCP and executing tools require authentication.
list_projectsList TryMimetic projects/sites available to this token.
{
"additionalProperties": false,
"properties": {},
"type": "object"
}
get_growth_overviewReturn audit findings, recent recording summaries, and agent guidance for a project. This is a COMPOSITE of other tools and inherits their limits: findings are heuristic detections rather than verified defects, and recordings are a consent-gated and therefore biased sample. Lead with the growth or revenue outcome and keep the technical detail underneath as evidence.
{
"additionalProperties": false,
"properties": {
"limit": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"project": {
"type": "string"
}
},
"type": "object"
}
list_audit_findingsList audit/backlog findings for a project. Findings are DETECTIONS, not verified defects, and severity is scored by heuristic. Do not report one as a confirmed bug without checking the live page: individual detectors have known false-positive classes. The audit sees only what is publicly observable from outside, so a clean result is a lower bound and the ABSENCE of a finding is not evidence the problem is absent. Distinguish broken from cosmetic from subjective before recommending work, and describe fixes as proposals to test, never as ready to ship.
{
"additionalProperties": false,
"properties": {
"limit": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"project": {
"type": "string"
}
},
"type": "object"
}
list_recordingsList recent session recording summaries for a project. Recording is consent-gated, so sessions are a BIASED SAMPLE of traffic: never infer total volume, conversion rate, or 'most users' from them, and never read an absence of recordings as an absence of traffic. Counts here are small, so give the plain count rather than a percentage, and do not call a pattern seen in a handful of sessions a trend.
{
"additionalProperties": false,
"properties": {
"limit": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"project": {
"type": "string"
}
},
"type": "object"
}
review_recent_recordingsUse when the user asks Claude Code to check the last N recordings, find bugs, identify UX friction, or propose A/B tests. Returns a code-review brief with recording evidence, patterns, audit context, and suggested output format.
{
"additionalProperties": false,
"properties": {
"focus": {
"enum": [
"bugs",
"ab_tests",
"both"
],
"type": "string"
},
"limit": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"project": {
"type": "string"
}
},
"type": "object"
}
get_replay_insightReturn the persisted replay insight for a session. The narrative is MODEL-GENERATED from the recording and redacted, so it is an interpretation and not a transcript: never quote it as something the user said or did verbatim, and never present a single session as representative. Redaction means fields can be missing by design, which is not the same as nothing having happened.
{
"additionalProperties": false,
"properties": {
"latest": {
"type": "boolean"
},
"project": {
"type": "string"
},
"session_id": {
"type": "string"
}
},
"type": "object"
}
query_ga4Run a READ-ONLY Google Analytics 4 report for a project's connected property. Returns rows for the requested GA4 metrics/dimensions over a date range. Use to answer questions about the user's real traffic, conversions, revenue, channels, landing pages, devices, etc.
{
"additionalProperties": false,
"properties": {
"dimensions": {
"description": "GA4 dimension API names, e.g. date, sessionDefaultChannelGroup, pagePath, landingPage, country, deviceCategory.",
"items": {
"type": "string"
},
"type": "array"
},
"end_date": {
"description": "Default today.",
"type": "string"
},
"limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"metrics": {
"description": "GA4 metric API names, e.g. sessions, activeUsers, screenPageViews, conversions, totalRevenue, engagementRate.",
"items": {
"type": "string"
},
"type": "array"
},
"order_by_metric": {
"description": "Sort rows by this metric, descending.",
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"start_date": {
"description": "GA4 date or NdaysAgo (e.g. 28daysAgo, 2024-01-01). Default 28daysAgo.",
"type": "string"
}
},
"required": [
"project",
"metrics"
],
"type": "object"
}
query_gscRun a READ-ONLY Google Search Console query for a project's verified site. Returns rows with clicks, impressions, ctr, position for the requested dimensions. Use for SEO/search questions: top queries, pages, countries, devices.
{
"additionalProperties": false,
"properties": {
"dimensions": {
"description": "GSC dimensions: query, page, country, device, date. Default [query].",
"items": {
"type": "string"
},
"type": "array"
},
"end_date": {
"description": "YYYY-MM-DD. Default ~3 days ago (GSC data lag).",
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"row_limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"start_date": {
"description": "YYYY-MM-DD. Default ~90 days ago.",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
describe_bqDescribe the project's GA4 BigQuery export before writing SQL for query_bq: the dataset name (analytics_<property id>), its location, and the date range of the daily events_YYYYMMDD and intraday tables, plus example SQL and the query limits. The dataset comes from the project's selected GA4 property.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
query_bqRun a READ-ONLY GoogleSQL SELECT against the project's own GA4 BigQuery export (raw events: event_params, user_pseudo_id, traffic_source, items, ecommerce). Unqualified tables resolve to the project's dataset, so FROM `events_*` with a _TABLE_SUFFIX filter works. SELECT only, the project's own dataset only (checked with a BigQuery dry run), capped bytes billed and rows. Returns columns and rows. Run describe_bq first for the dataset and available dates.
{
"additionalProperties": false,
"properties": {
"limit": {
"description": "Maximum rows returned (default 100).",
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"sql": {
"description": "GoogleSQL SELECT, e.g. SELECT event_name, COUNT(*) AS n FROM `events_*` WHERE _TABLE_SUFFIX \u003e= \u002720260901\u0027 GROUP BY 1 ORDER BY n DESC",
"type": "string"
}
},
"required": [
"project",
"sql"
],
"type": "object"
}
list_ga4_propertiesList every GA4 property the project's connected Google account can see: id, name, account, website URL, sessions over the last 28 days (a dead or wrong property is obvious next to its live sibling), and which property the project currently reads from. Use before set_ga4_property when numbers look wrong or several properties claim the same site.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
set_ga4_propertyPoint the project's Google Analytics connection at a specific GA4 property. Validates the id against what the connected account can see, then persists it; every query_ga4 read and Mimetic dashboard uses the new property from then on. Run list_ga4_properties first and pick the property with real traffic.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"property_id": {
"description": "Numeric GA4 property id from list_ga4_properties, e.g. 403226097.",
"type": "string"
}
},
"required": [
"project",
"property_id"
],
"type": "object"
}
setup_analyticsOne-click hosted analytics setup for a project's site, so the owner never touches a Google console: Mimetic provisions and hosts the GA4 property and grants the owner Viewer access to it, installs the tag via a GitHub PR or the Shopify app pixel, ships Search Console verification, and submits sitemaps to Google/Bing (plus IndexNow) once verified. Use when a site has no analytics or the user asks to set up GA4 / Search Console. The run takes a minute or two, so this starts it in the background: poll analytics_setup_status for progress. If YOU are a coding agent with the site's repo checked out, pass channel='agent': no PR pipeline or GitHub App needed, provisioning runs server-side and analytics_setup_status returns the exact snippet + placement instructions for you to apply and commit yourself.
{
"additionalProperties": false,
"properties": {
"channel": {
"description": "auto (default): install via GitHub PR / Shopify app. agent: you apply the tag in the repo yourself; fetch the snippet from analytics_setup_status once provisioning finishes.",
"enum": [
"auto",
"agent"
],
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"type": "object"
}
setup_google_adsStand up a Google Ads account for a project's site with the tracking already wired: created under Mimetic's manager account so there is nothing to configure, linked to the site's GA4 property, auto-tagging on, and an ADMIN invite emailed to the site owner. The owner holds admin on the account and the manager link stays in place until they remove it. Ads can run once the invited admin accepts and adds billing. Reuses an already-linked account instead of creating a duplicate. Requires a GA4 property, so run setup_analytics first if there is none. Runs in the background: poll google_ads_status.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"type": "object"
}
google_ads_statusWhether a Google Ads account is linked for this project: customer ID, account name/currency when readable, which credentials can query it, and the most recent ads setup event (created/linked/failed). If nothing is linked, says how to set one up.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"type": "object"
}
query_google_adsRun a READ-ONLY Google Ads (GAQL) report against the project's linked Ads account: campaign spend, clicks, conversions, search terms, ad groups, etc. Accepts a full GAQL SELECT query; defaults to campaign performance over the last 30 days. cost_micros/*_micros fields are millionths of the account currency.
{
"additionalProperties": false,
"properties": {
"gaql": {
"description": "GAQL SELECT query, e.g. SELECT campaign.name, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_7_DAYS.",
"type": "string"
},
"limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
analytics_setup_statusStatus of the hosted analytics setup for a project: none, in_progress, done (installed, waiting on data), live (events flowing), failed, or already_connected, plus the GA4 measurement ID, install-PR review URL, and Search Console verification state. For channel='agent' setups, the payload includes agent_install with the exact snippet + placement instructions for you to apply in the repo. Checking status also retries any pending Search Console verification and sitemap-submission followups.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"type": "object"
}
setup_session_recordingInstall Mimetic's session recording on a project's site: a masked, consent-gated loader (records NOTHING until the site's consent tooling grants analytics consent; IAB TCF, Cookiebot, and OneTrust are pre-wired). channel='auto' ships it as a GitHub PR; channel='agent' returns the snippet + placement instructions for you to apply in the repo. Insights then flow to list_recordings / review_recent_recordings and the daily Slack digest.
{
"additionalProperties": false,
"properties": {
"channel": {
"description": "auto = GitHub PR; agent = you apply the returned snippet yourself.",
"enum": [
"auto",
"agent"
],
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
get_connection_recommendationsWhat to connect or set up NEXT for a project, filtered to what the site's detected stack makes relevant: GA connect only when GA4 exists (hosted setup_analytics when nothing does), Google Ads only when linkable, connect_posthog only when PostHog is detected, and a Klaviyo partner signup link only when NO email/SMS tool is detected. Call this before suggesting connections so users aren't overwhelmed with irrelevant asks.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
connect_experimentationConnect a project's A/B-testing platform (Intelligems, VWO, Optimizely, or GrowthBook). Optimizely and VWO connect over OAuth when configured: the tool returns an authorization URL for the user to open and approve, like connect_klaviyo. Intelligems and GrowthBook have no OAuth — call once with just vendor to get API-key instructions, then again with api_key. Credentials are validated against the live vendor API, stored encrypted, and bound to your token's email. Read-only usage only. VWO needs account_id (numeric, in the app.vwo.com URL); Optimizely takes account_id (project id) when the token sees multiple projects; self-hosted GrowthBook takes api_host.
{
"additionalProperties": false,
"properties": {
"account_id": {
"description": "VWO account id / Optimizely project id.",
"type": "string"
},
"api_host": {
"description": "Self-hosted GrowthBook API host, e.g. https://gb-api.example.com.",
"type": "string"
},
"api_key": {
"description": "Vendor API key/token \u2014 only for the key-paste path.",
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"vendor": {
"enum": [
"intelligems",
"vwo",
"optimizely",
"growthbook"
],
"type": "string"
}
},
"required": [
"project",
"vendor"
],
"type": "object"
}
query_experimentsREAD-ONLY reads from the project's connected A/B-testing platform (connect_experimentation first). action=list returns a normalized experiment/campaign list (id, name, status); action=results returns the vendor's results payload for one experiment_id (lift, conversions, revenue-per-visitor for Intelligems; variation reach and metrics for Optimizely; phase results for GrowthBook; campaign detail for VWO). If vendor is omitted and the project has exactly one connected platform, that one is used.
{
"additionalProperties": false,
"properties": {
"action": {
"description": "Default list.",
"enum": [
"list",
"results"
],
"type": "string"
},
"experiment_id": {
"description": "Required for action=results (from action=list).",
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"vendor": {
"enum": [
"intelligems",
"vwo",
"optimizely",
"growthbook"
],
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
disconnect_experimentationDisconnect a project's A/B-testing platform: deletes your stored (encrypted) credential for that vendor immediately. Only the account that connected it can disconnect it. query_experiments stops working for that vendor until connect_experimentation is run again.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"vendor": {
"enum": [
"intelligems",
"vwo",
"optimizely",
"growthbook"
],
"type": "string"
}
},
"required": [
"project",
"vendor"
],
"type": "object"
}
connect_mixpanelConnect a project's Mixpanel. Two paths: auth='oauth' returns an authorization URL for the user to open and approve (their org admin must have Mixpanel's MCP enabled); auth='service_account' (default) takes a customer-minted service-account username + secret — call once with no credentials to get instructions. Credentials are validated against the live Mixpanel API before being stored encrypted, and the connection binds to your token's email. Read-only usage only. Pass mixpanel_project_id when the credential sees multiple projects; region is us (default), eu, or in.
{
"additionalProperties": false,
"properties": {
"auth": {
"enum": [
"service_account",
"oauth"
],
"type": "string"
},
"mixpanel_project_id": {
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"region": {
"enum": [
"us",
"eu",
"in"
],
"type": "string"
},
"secret": {
"description": "Service-account secret.",
"type": "string"
},
"username": {
"description": "Service-account username.",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
query_mixpanelREAD-ONLY reads from the project's connected Mixpanel (connect_mixpanel first). Service-account connections use the Query API: action=events (event names), top_events, segmentation (params: event, from_date, to_date, unit), funnels (saved funnel list), funnel (params: funnel_id, from_date, to_date), retention (params: from_date, to_date, born_event). OAuth connections use Mixpanel's MCP: action=list_tools enumerates their 40+ analysis tools, action=call runs one (params: tool + arguments); write-shaped tools are refused.
{
"additionalProperties": false,
"properties": {
"action": {
"description": "See description; default events / list_tools.",
"type": "string"
},
"params": {
"additionalProperties": true,
"description": "Action parameters (from_date, event, funnel_id, tool, arguments...).",
"type": "object"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
disconnect_mixpanelDisconnect a project's Mixpanel: deletes your stored (encrypted) credential immediately. Only the account that connected it can disconnect it.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
connect_amplitudeConnect a project's Amplitude. Preferred: auth='oauth' (default) returns an authorization URL for the user to open and approve in a browser; the grant is Amplitude's own mcp:read scope, so no key ever leaves their account. Fallback: auth='api_key' takes the project's API key + secret key from Settings → Projects (Amplitude has no read-only key variant; we only issue reads and store the pair encrypted). Call with auth='api_key' and no credentials to get instructions. Credentials are validated against the live Amplitude API before being stored, and the connection binds to your token's email. The key pair is project-scoped, so there is nothing to pick; pass amplitude_project_id only as a label. region is us (default) or eu.
{
"additionalProperties": false,
"properties": {
"amplitude_project_id": {
"type": "string"
},
"api_key": {
"description": "Amplitude project API key.",
"type": "string"
},
"auth": {
"enum": [
"api_key",
"oauth"
],
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"region": {
"enum": [
"us",
"eu"
],
"type": "string"
},
"secret_key": {
"description": "Amplitude project secret key.",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
query_amplitudeREAD-ONLY reads from the project's connected Amplitude (connect_amplitude first). API-key connections use the Dashboard API: action=events (event catalog), segmentation (params: event, start, end, interval, metric), funnel (params: events list in order, start, end), retention (params: start_event, return_event, start, end), active_users (params: metric active|new, interval 1|7|30, start, end), sessions (params: start, end). Dates YYYY-MM-DD or YYYYMMDD, default last 30 days. OAuth connections use Amplitude's MCP: action=list_tools enumerates their tools, action=call runs one (params: tool + arguments); write-shaped tools are refused.
{
"additionalProperties": false,
"properties": {
"action": {
"description": "See description; default events / list_tools.",
"type": "string"
},
"params": {
"additionalProperties": true,
"description": "Action parameters (event, events, start, end, tool, arguments...).",
"type": "object"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
disconnect_amplitudeDisconnect a project's Amplitude: deletes your stored (encrypted) credential immediately. Only the account that connected it can disconnect it.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
connect_adobe_analyticsConnect a project's Adobe Analytics with an OAuth Server-to-Server credential the user's Adobe admin creates in their own Developer Console (client_id + client_secret + the scopes line). Call once with no credentials to get the instructions. The credential is validated live (IMS token, discovery/me, report suites) before being stored encrypted, and the connection binds to your token's email. Pass adobe_company_id when the credential sees several companies and rsid when the company has several report suites. Read-only usage only; Adobe has no browser-approval path Mimetic can host.
{
"additionalProperties": false,
"properties": {
"adobe_company_id": {
"description": "globalCompanyId, only if several.",
"type": "string"
},
"client_id": {
"type": "string"
},
"client_secret": {
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"rsid": {
"description": "Report suite id, only if several.",
"type": "string"
},
"scopes": {
"description": "The Scopes line from the credential (optional; Adobe default used otherwise).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
query_adobe_analyticsREAD-ONLY reads from the project's connected Adobe Analytics (connect first). action=kpi (daily visits, visitors, page views, orders, revenue, bounces; params: start, end, metrics), top (params: dimension e.g. page, referringdomain, evar1; metrics; limit; start; end), metrics / dimensions (the report suite's catalog), segments, suites, report (params.body = a full Analytics 2.0 /reports request). Dates YYYY-MM-DD, default last 30 days, end exclusive. Adobe throttles at 12 requests per 6 seconds.
{
"additionalProperties": false,
"properties": {
"action": {
"description": "See description; default kpi.",
"type": "string"
},
"params": {
"additionalProperties": true,
"description": "Action parameters (start, end, metrics, dimension, limit, rsid, body).",
"type": "object"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
disconnect_adobe_analyticsDisconnect a project's Adobe Analytics: deletes your stored (encrypted) credential immediately. Only the account that connected it can disconnect it.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
connect_posthogConnect a project's PostHog over OAuth. Returns an authorization URL for the user to open in a browser; approving grants READ-ONLY scopes (query:read, project:read). The connection binds to your token's email and picks the PostHog project matching the domain. After approving, query with query_posthog. Reconnecting re-mints tokens and rebinds the project.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
query_posthogRun a READ-ONLY HogQL query against the project's connected PostHog — events, unique users, funnels-by-hand, properties, session counts. Accepts a full HogQL SELECT; defaults to daily events + unique users over the last 14 days. Requires connect_posthog first.
{
"additionalProperties": false,
"properties": {
"hogql": {
"description": "HogQL SELECT, e.g. SELECT event, count() FROM events WHERE timestamp \u003e now() - INTERVAL 7 DAY GROUP BY event ORDER BY count() DESC.",
"type": "string"
},
"limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"posthog_project_id": {
"description": "Override the bound PostHog project id.",
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
connect_klaviyoConnect a project's Klaviyo over OAuth. Returns an authorization URL for the user to open in a browser; approving grants READ-ONLY scopes (campaigns/flows/lists/segments/metrics). The connection binds to your token's email. If the site has NO email platform yet, use the Klaviyo signup link from get_connection_recommendations first, then connect.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
query_klaviyoREAD-ONLY queries against the project's connected Klaviyo. Listings: campaigns, flows, lists, segments, metrics. Reports and checks: campaign_performance / flow_performance (opens, clicks, revenue attributed to Placed Order, per campaign/flow over a timeframe — sorted by revenue), abandoned_cart_status (is a cart/checkout-recovery flow live? the single highest-value check), dead_links (fetches recent campaign email HTML and HTTP-checks every real link; template-variable and unsubscribe links skipped). Requires connect_klaviyo first.
{
"additionalProperties": false,
"properties": {
"filter": {
"description": "Optional Klaviyo filter expression for listings, e.g. equals(status,\u0027live\u0027).",
"type": "string"
},
"page_size": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"resource": {
"description": "What to fetch. Default campaigns.",
"enum": [
"campaigns",
"flows",
"lists",
"segments",
"metrics",
"campaign_performance",
"flow_performance",
"abandoned_cart_status",
"dead_links"
],
"type": "string"
},
"timeframe": {
"description": "For the performance reports. Default last_30_days.",
"enum": [
"last_7_days",
"last_30_days",
"last_90_days",
"last_365_days",
"this_month",
"last_month"
],
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
connect_webflowConnect a project's Webflow site over OAuth. Returns an authorization URL for the user to open in a browser; approving grants READ-ONLY access (sites:read, which also covers Webflow Analyze traffic reports). The connection binds to your token's email and covers every site the Webflow account authorizes. After approving, query with query_webflow.
{
"additionalProperties": false,
"properties": {
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
query_webflowREAD-ONLY queries against the project's connected Webflow. Resources: sites (every site on the connected account: id, name, published domains, last published), traffic (Webflow Analyze daily sessions for the project's site over the last N days; needs the workspace's Analyze add-on, reported as not_enabled otherwise). Requires connect_webflow first.
{
"additionalProperties": false,
"properties": {
"days": {
"description": "traffic only: lookback window, default 30.",
"maximum": 365,
"minimum": 1,
"type": "integer"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"resource": {
"description": "Defaults to sites.",
"enum": [
"sites",
"traffic"
],
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
connect_shopifyConnect a project's Shopify store for read-only queries. Checks whether the Mimetic Shopify app is installed and whether your token's email may read the store. Not installed -> returns install_url for the merchant (pass `shop` = the *.myshopify.com domain for a link that lands on the grant screen). Installed but your account is not yet approved -> returns approve_url: have the merchant open it inside Shopify admin and click Approve (15-minute, single-use), then call connect_shopify again. Alternatively the merchant can generate a code on the app's Claude Code page and you pass it as `code`. Then query with query_shopify.
{
"additionalProperties": false,
"properties": {
"code": {
"description": "Optional link code (XXXX-XXXX) the merchant generated inside the Mimetic Shopify app.",
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"shop": {
"description": "Optional *.myshopify.com domain, for a direct install link.",
"type": "string"
}
},
"required": [
"project"
],
"type": "object"
}
query_shopifyREAD-ONLY Shopify Admin GraphQL over the project's store, through the installed Mimetic app (orders, products, inventory, customers-free reports, checkouts, returns, themes: whatever the app's read scopes cover). Accepts a full GraphQL `query` document (mutations are rejected before they reach Shopify) plus `variables`; defaults to the shop identity + the last 30 days of orders. Requires connect_shopify first, and the token's email must be the store owner.
{
"additionalProperties": false,
"properties": {
"graphql": {
"description": "Admin API GraphQL query document, e.g. { products(first: 10, sortKey: UPDATED_AT, reverse: true) { edges { node { id title totalInventory } } } }",
"type": "string"
},
"project": {
"description": "Project/site key (from list_projects).",
"type": "string"
},
"variables": {
"description": "GraphQL variables for the query.",
"type": "object"
}
},
"required": [
"project"
],
"type": "object"
}
billing_statusReturn the Mimetic billing status for a project: plan, whether it is on a paid/active plan, and checkout/portal URLs.
{
"additionalProperties": false,
"properties": {
"project": {
"type": "string"
}
},
"type": "object"
}
get_checkout_linkReturn a Stripe Checkout URL to upgrade a project to a paid Mimetic plan. Use when the user wants to pay or upgrade: give them the URL to open in a browser. They enter payment details on Stripe and the plan activates automatically once payment completes.
{
"additionalProperties": false,
"properties": {
"plan": {
"description": "Plan to check out (default starter).",
"type": "string"
},
"project": {
"type": "string"
}
},
"type": "object"
}