Cogny MCP Server
Connect Claude to your marketing data. Query BigQuery, browse reports, manage growth tickets, and build organizational context — all through natural conversation.
What is the Cogny MCP Server?
Cogny's MCP (Model Context Protocol) server lets you connect Claude directly to your marketing data stack. Once connected, Claude can query your BigQuery warehouse, read Cogny's AI-generated reports, manage growth tickets, and access your organizational context — all through natural conversation.
Server URL: https://app.cogny.com/mcp
Protocol: JSON-RPC 2.0 over HTTPS (MCP spec 2024-11-05)
Authentication: OAuth 2.1 (authorization code flow with PKCE) — no API key needed; your MCP client handles the sign-in, and you pick which warehouse to authorize.
Tip: You can also use a warehouse-scoped URL of the form
https://app.cogny.com/mcp/w/<your-warehouse-id>to skip the warehouse picker. Copy the exact URL for your workspace from Settings → MCP inside the app. Both the generic and scoped URLs work everywhere.
Quick Setup
In Claude.ai / Claude Cowork
- Go to Settings → Connectors → Add custom connector
- Enter the name cogny and paste the server URL:
https://app.cogny.com/mcp - Click Add — Claude will prompt you to log in
- In the popup, select your warehouse and click Authorize
- Start chatting — Claude now has access to your marketing data
In ChatGPT
- Go to Settings → Apps → Advanced settings and enable Developer mode
- Click Create app, enter the name Cogny, and paste the server URL:
https://app.cogny.com/mcp - Set Authentication to OAuth, check the risk acknowledgment, and click Create
- In the popup, select your warehouse and click Authorize
- To use it: click + in the chat box → More → Cogny
ChatGPT may prompt you to authorize twice on first use — this is normal.
In Claude Code (CLI)
The fastest route is to let the agent install Cogny itself: paste Read https://cogny.com/SKILL.md and follow the setup instructions. See Install Cogny in Your AI Agent for what that does. To add the MCP server by hand instead:
Run this in your project directory — Claude Code handles the OAuth login automatically:
claude mcp add --transport http cogny https://app.cogny.com/mcp
Or, if you already have a Cogny API token, skip OAuth with a bearer header:
claude mcp add --transport http cogny https://app.cogny.com/mcp --header "Authorization: Bearer YOUR_TOKEN"
In Codex CLI
Run this in your project directory — Codex detects OAuth and opens the authorization flow automatically:
codex mcp add cogny --url https://app.cogny.com/mcp
If the server is already added and you need to authenticate again, run codex mcp login cogny.
Via the API (Anthropic MCP Client)
Use the Anthropic API with the mcp-client-2025-04-04 beta header to connect programmatically against https://app.cogny.com/mcp. See Anthropic's MCP documentation for details.
Available Tools
All tools include MCP safety annotations (readOnlyHint, destructiveHint, etc.) so Claude understands which tools are safe to call without confirmation.
BigQuery Analytics
Query your connected data warehouse directly.
| Tool | Description | Safety |
|---|---|---|
list_datasets | List all BigQuery datasets in your warehouse | Read-only |
list_tables | List tables in a dataset (auto-groups GA4 sharded tables) | Read-only |
inspect_schema | Get column definitions and CREATE TABLE statement | Read-only |
execute_bigquery_sql | Run read-only SQL queries (SELECT/WITH only, 500 row limit) | Read-only |
Example prompt: "What are my top 10 landing pages by conversion rate this month?"
Reports & Visualizations
Access Cogny's AI-generated marketing reports and render interactive charts.
| Tool | Description | Safety |
|---|---|---|
list_reports | List recent reports (SEO, Google Ads, CRO, etc.) | Read-only |
get_report | Get full report content with all sections | Read-only |
get_report_section | Get a section's SQL and chart config | Read-only |
show_report_section | Render an interactive chart visualization | Read-only |
show_metrics | Display configured core KPI metrics with trends | Read-only |
show_budget | Show ad spend vs. monthly budget targets | Read-only |
Example prompt: "Show me this week's SEO performance report"
Growth Tickets
Manage the actionable opportunities Cogny identifies from your data.
| Tool | Description | Safety |
|---|---|---|
list_tickets | List tickets with status/type filtering | Read-only |
get_ticket | Get ticket details, body, execution history and the latest run (status, the pull request a code ticket opened, or its error); wait_seconds (up to 25) waits for the run to move on | Read-only |
get_comments | Get the ticket thread — agent notes and human replies, newest first | Read-only |
get_ticket_source_context | Get the report/analysis that created a ticket | Read-only |
get_winner_status | Long-term impact history of a winner ticket (trend, cumulative USD impact, check schedule) | Read-only |
create_ticket | Create a new growth ticket: manual, agent, or code (execution_target: "code", with repo when the workspace has several connected) | Write |
update_ticket_status | Move ticket through workflow (new > assigned > doing > analysis). A code ticket isn't moved to doing this way, because that doesn't start the code agent: use approve_ticket (Cogny's code agent does it) or start_ticket (you do it) | Write |
add_comment | Add a comment to a ticket | Write |
add_ticket_feedback | Tell Cogny a ticket is useful, already done, wrong, duplicate, or out of scope — feeds the ticket generator; optionally rejects it | Write |
assign_ticket | Assign or unassign a ticket | Write |
link_pr_to_ticket | Link a GitHub PR for auto-status updates | Write |
Example prompt: "What are my open growth tickets? Assign the top-priority one to me."
Leaving feedback on a ticket
add_ticket_feedback records what an agent thinks of a ticket. Cogny reads it
back when generating the next batch, so a ticket marked already_done or
incorrect_data stops recurring. Always explain the verdict — the reasoning is
what future generation learns from.
| Verdict | Means |
|---|---|
useful | Worth doing as written |
already_done | The work described is already in place |
not_actionable | Too vague or underspecified to act on |
incorrect_data | The numbers or the premise are wrong |
duplicate | Already covered by another ticket |
out_of_scope | Not something this workspace does |
Feedback is appended, never overwritten, so earlier entries and human rejection
reasons survive. A negative verdict leaves the ticket open on its own; pass
reject: true to close it with your feedback as the recorded reason. Two
constraints on rejecting, worth checking before the call:
- Agent-executed tickets can't be rejected over MCP — reject those in the web UI.
- Tickets already
donecan't be rejected — leave feedback withoutreject; it still reaches the generator.
Reading the thread
get_comments returns agent and human entries merged, newest first. Each entry
carries source (agent for anything written over MCP, user for a comment
typed in the Cogny UI, external_reviewer for a comment left through a review
link) and type (comment, or feedback for an add_ticket_feedback entry,
which also carries verdict).
Review links: comments from people outside Cogny
On workspaces with live edit, a ticket's preview can be shared with someone who has no Cogny account (a doctor checking medical claims, a lawyer, your client). They open the link, see the preview, and leave comments under their own name; the comments land on the ticket and the member who made the link gets an email for each one. Anyone holding the link can comment until it expires (7 to 90 days, 30 by default) or is revoked. While a reviewer has the preview open it runs and is billed like your own use of live edit.
| Tool | Description | Safety |
|---|---|---|
create_review_link | Make a review link for a ticket, with who it is for, what to check and the page it opens on. The URL is returned once | Write |
list_review_links | A ticket's review links, whether each still works, and (with include_comments) the comments made through it | Read-only |
revoke_review_link | Turn a link off at once; its comments stay on the ticket | Write |
Organizational Context
A hierarchical knowledge graph for company strategy, competitor intel, and team knowledge.
| Tool | Description | Safety |
|---|---|---|
browse_context_tree | List child nodes at a path (or root categories) | Read-only |
read_context_node | Read full node content with backlinks | Read-only |
search_context | Full-text search across the context tree | Read-only |
get_context_tree_overview | High-level structure overview | Read-only |
write_context_node | Create or update a context node (upsert) | Write |
archive_context_node | Soft-delete a context node | Destructive |
Example prompt: "What do we know about our competitors' ad strategies?"
Connected Platforms
Cogny federates tools from your connected ad platforms. These appear as namespaced tools (e.g., mcp__google_ads__execute_gaql) and vary based on your connected integrations.
Supported platforms include Google Ads, Meta Ads, LinkedIn Ads, Search Console, and more. Every integration's full tool list is at cogny.com/integrations/tools.
| Tool | Description | Safety |
|---|---|---|
list_integrations | Available and connected integrations; connected ones include their server_id | Read-only |
add_custom_mcp_server | Register your own MCP server (name, https URL, optional API key sent as Authorization: Bearer). Discovers its tools and returns server_id plus each tool's read_only flag. Owners and admins only | Write |
refresh_mcp_discovery | Re-list a server's tools after it changes | Read-only |
list_integration_tools | Every connected integration's tools with their input schemas, and whether each reads or writes | Read-only |
call_integration_tool | Run a connected integration's read-only tool by its full name | Read-only |
call_integration_write_tool | Run a connected integration's tool that changes something, by its full name | Destructive |
Connected a new integration mid-session? Your AI client keeps its own copy of Cogny's tool list, so a platform you connect later doesn't show up as mcp__… tools until the client reloads the list. In ChatGPT, open Settings → Apps → Cogny and choose Refresh; in other clients, reconnect or start a new session. Until then your agent can reach the new tools right away with list_integration_tools and call_integration_tool.
Cogny Analysis
Hand a question to Cogny's own analyst instead of working it through tool by tool. It works through the workspace's connected platforms, analytics, warehouse and business context, and writes up the findings with the numbers behind them and what to change. A run takes one to several minutes, and is also saved as a chat in the Cogny app.
| Tool | Description | Safety |
|---|---|---|
run_cogny_analysis | Start an analysis of a question. Optional max_credits caps what it may spend; at the cap it stops and returns what it has. It reads connected accounts and never changes them | Spends credits |
get_cogny_analysis | Status, latest step, or the finished answer of an analysis, by task_id. Optional wait_seconds (up to 25) waits for the next step or the answer before replying, so an agent needs fewer polls | Read-only |
cancel_cogny_analysis | Stop an analysis by task_id. It stops at its next step and is charged only for what it used until then | Stops a run |
An analysis is charged in credits by usage, like a question in Cogny's chat, on every plan: from the monthly credits on Cogny AI, Cogny Pro and Cloud, from top-up credits on Solo, and from the 50-credit welcome gift on Free. With no credits left, the tool says so and links to top-ups instead of starting.
MCP Tasks. Cogny supports the MCP Tasks extension (io.modelcontextprotocol/tasks, protocol 2026-07-28). A client that declares it gets a task handle from run_cogny_analysis and run_automation instead of a result: it polls tasks/get for the status and latest step and receives the answer there, can stop it with tasks/cancel, and doesn't hold a connection open while it runs. If the client can show forms (elicitation), the task first asks the user to confirm the credit spend for an analysis, or a live loop run with write access, and nothing starts until they say yes (tasks/update). A cancelled analysis stops at its next step and is charged for what it used until then. A client without Tasks gets a task_id, polls get_cogny_analysis and can stop the run with cancel_cogny_analysis; run_automation then answers as before. Without Tasks there is no confirmation form, so the agent asks the user before it starts an analysis.
Cogny Video
Hand Cogny the lines a short video should say and get back a finished MP4 in the Creative library, in one of two styles:
-
Motion design (
style: "motion_design", the default): animated text with the workspace's logo and brand colours, the exact words given and nothing else. Cogny writes the video, checks its frames for layout problems and with a visual review, fixes what they flag (up to three previews) and renders it, in one to three minutes. Every line stays on screen long enough to read (about a second plus 0.3 s a word), andemphasispicks the hero line: the punchline or the price, set as the biggest type and held longest. -
Influencer (
style: "influencer"): a UGC-style clip of an AI-generated creator saying your lines to a phone camera, made by Cogny's AI video generator in one to five minutes. 3 to 15 seconds, vertical (the default) or landscape; a creator says about 2.5 words a second, so a 10-second clip takes about 25 spoken words. Numbers, prices and web addresses are said in full and count as the words they are said in: "$280 a month" is said "two hundred and eighty dollars a month", "cogny.com" "cogny dot com". The creator is never a real, named or lookalike person. The clip has no text in the frame, so use the lines as written as the post's caption.The speech is checked. When the clip is delivered, Cogny transcribes its audio and compares it with the script: every number must be right, and the other words may differ by at most one in five (a brand name spelled differently by the transcription is fine). If it doesn't match, Cogny makes the clip once more, asking for a slower and clearer delivery. Never more than once. If the second take doesn't match either, you still get the better of the two, with a warning that quotes what the creator actually says. The result says whether the speech was checked and what it found (
speech_checkin the structured result:matched,transcript,wer,takes).
Brand fonts. Motion design videos and carousels are set in the workspace's brand fonts (Settings → Brand & Context, heading and body) when they are among the free fonts Cogny bundles: Inter, Space Grotesk, Open Sans, Manrope, Poppins, Outfit, Quicksand, Montserrat, Roboto, Lato, DM Sans, Plus Jakarta Sans, Work Sans, Nunito, Nunito Sans, Raleway, Figtree, Rubik, Source Sans 3, IBM Plex Sans, Playfair Display, Lora, Merriweather, Source Serif 4 and JetBrains Mono. A font that isn't (a commercial or custom typeface) is set in the closest bundled one where there is a close match (SF Pro and Helvetica in Inter, Georgia in Merriweather, Gotham and Proxima Nova in Montserrat), otherwise in Inter, and the result says so in one line (fonts in the structured result: the families used and the one they replaced).
| Tool | Description | Safety |
|---|---|---|
create_video | Start a video from on_screen (1 to 6 lines, word for word: for motion design the first is the headline and the last the call to action; for influencer, what the creator says). Optional style, emphasis (motion design: the hero line's number or text), format (feed_portrait 1080×1350, the motion design default; feed_square; landscape 1920×1080; vertical 1080×1920 for Stories, Reels, TikTok and Shorts, the influencer default; influencer takes vertical or landscape only), seconds (motion design 6 to 30, default 12 or longer when the lines need it; influencer 3 to 15, default 8 or longer when the spoken script needs it), concept (how it should feel; for influencer, who the creator is and where), logo_asset_id (motion design: a brand asset) and title | Spends credits |
get_video | Status, latest step, or the finished video of a task, by task_id: the MP4 URL and the Creative library asset id (and, for motion design, the contact sheet of the last preview; for influencer, the speech check). Optional wait_seconds (up to 25) | Read-only |
cancel_video | Stop a video by task_id. It stops at its next step; a motion design video is charged only for the frame previews already made, an influencer video only for clips already delivered | Stops a run |
A motion design video costs about 2 to 4 credits: each frame preview and the render is about 1 credit. It needs 4 credits available to start. An influencer video costs about 0.9 credits a second (8 seconds is about 8 credits, 15 seconds about 14), charged when the clip is delivered; it needs one clip's credits available to start. If the speech has to be redone, the second clip is charged too, so the most an influencer video costs is twice that (22 credits for 8 seconds, 26 for 10). The redo only runs when the workspace still has the credits for it; otherwise the first clip is delivered with the warning. Both clips stay in the Creative library. The speech check itself costs a small fraction of a credit. With too few credits to start, the tool says so and links to top-ups. Like an analysis, a video runs as an MCP task for a client that declares Tasks (with a confirmation form first when the client can show one) and with get_video / cancel_video for any other client. Members with a view-only role can't start one.
The tools were called create_cogny_video, get_cogny_video and cancel_cogny_video when they launched; those names still work but are no longer listed.
Cogny Carousel
Hand Cogny the slides of a carousel and get back a finished set in the Creative library: one PDF, which LinkedIn shows as a swipeable document post, and one PNG per slide for a multi-image post on LinkedIn, X or Instagram. Each slide shows only the words you give it, word for word, with the workspace's logo, brand colours and brand fonts (as for videos, above) and, by default, its number ("2 / 7"). Cogny designs the slides, then checks every one before rendering: text inside the frame and not overlapping, type large enough to read on a phone, the hero text the largest on its slide, one design across all slides (same type, colours, margins, and the logo and number in the same place) and the right words on the right slide. It fixes what the checks and a visual review flag, up to three previews, and renders the set in one to three minutes. If the slides still fail after three tries, nothing is rendered and the result says why.
| Tool | Description | Safety |
|---|---|---|
create_carousel | Start a carousel from slides (1 to 10, in order). Each slide has a headline (up to 120 characters) and optional body lines (up to 4, 280 characters in all), word for word, an optional kind (hook, point, stat, quote or cta; by default the first slide is the hook, the last the call to action) and an optional emphasis: words from the slide to set as its hero, e.g. "40%" from "We cut our CAC by 40%". Optional format (linkedin_portrait 1080×1350, the default, which reads best in the LinkedIn and Instagram feeds; or square 1080×1080), concept (how it should look and feel), logo_asset_id (a brand asset), slide_numbers (default true) and title. For a new version of a finished carousel pass based_on (its Creative library id) and only what changes: slides replaces all the slides, format, concept, title and slide_numbers one by one, and the rest comes from the earlier carousel. The new version keeps its design unless keep_design is false; it is a new carousel, charged like any other, and the earlier one is left as it is | Spends credits |
get_carousel | Status, latest step, or the finished carousel of a task, by task_id: the PDF URL, the slide PNG URLs in order, the Creative library asset id and how to post it. Optional wait_seconds (up to 25). Or pass creative_asset_id instead to read any carousel in the Creative library: its slides word for word, format and concept, to edit for a new version | Read-only |
cancel_carousel | Stop a carousel by task_id. It stops at its next step and is charged only for the slide previews already made | Stops a run |
A carousel costs about 2 to 5 credits: each slide preview (all slides at once) and the final render is 1 credit, and writing the slides is a fraction of a credit each time. It needs 6 credits available to start. Like a video, it runs as an MCP task for a client that declares Tasks (with a confirmation form first when the client can show one) and with get_carousel / cancel_carousel for any other client. Members with a view-only role can't start one. Cogny never posts it by itself.
Posting it. With LinkedIn Organic connected, post the PDF as a document carousel with create_post: text (the post), document_url (the PDF URL from the result) and document_title (required by LinkedIn and shown on the document); schedule_post takes the same fields plus scheduled_for. For a multi-image post pass the PNG URLs as image_urls instead. On X, call upload_media with file_url for each PNG, then create_post with the media_ids; X takes at most four images a post. Post only after the user has seen the slides and said yes.
Example prompt: "Ask Cogny why paid search conversions dropped in the last 14 days and what we should change. Keep it under 50 credits."
Automations
Scheduled agents that act through write tools you greenlight. Every run is a ticket with a full transcript. Automations are included with Cloud. If these tools are not listed, automations aren't switched on for this workspace; contact support.
| Tool | Description | Safety |
|---|---|---|
list_automations | Automations with schedule, timezone, grants and the exact pre-approved tool list each run gets | Read-only |
create_automation | Name, instructions, crontab, IANA timezone (default Europe/Stockholm), write-tool action_grants with optional pinned constraints, optional explicit read_tools. Created disabled unless you enable it | Write |
update_automation | Change any of those fields; grant and read-tool lists are replaced as a whole. Enabling requires a crontab | Write |
run_automation | Run now, with or without a schedule. dry_run: true (the default) runs with no write authority | Write |
get_automation_run | Status, error and condensed transcript of a run, by ticket id | Read-only |
schedule_ticket | One run later instead of on a schedule: at run_at, delay_minutes from now, or delay_minutes after a code ticket's PR merges (after_merge_of_ticket_id). Same pre-approved action_grants / read_tools as an automation, plus context_tree_writes, or an automation_id to run once. Up to 180 days ahead, 25 waiting per workspace | Write |
list_scheduled_tickets | Waiting (or, with include_finished, past) scheduled runs, when each runs and the ticket it became | Read-only |
cancel_scheduled_ticket | Cancel a scheduled run that hasn't started | Write |
A scheduled run uses credits like any automation run. More in Scheduled tickets.
To point an automation at your own app, see Connect your own app to Cogny automations.
Workspace Status
| Tool | Description | Safety |
|---|---|---|
cogny_status | Check subscription, connected channels, and features | Read-only |
Bugs, Feature Requests and Support
Your agent can reach the Cogny team directly, with the details it already has, instead of you retyping them somewhere else. Each filing returns a reference. The answer comes back to your agent through list_support_messages and to you in the Cogny app (the life-buoy icon in the header), with an email if nobody has read it within a day. A request for a platform Cogny doesn't connect to yet is researched on the spot instead, and the verdict usually comes back in the same call.
| Tool | Description | Safety |
|---|---|---|
report_bug | A tool errored, returned wrong data, or didn't do what its description says. Pass the tool name and the raw error. Clearly scoped bugs are fixed by Cogny's coding agent and ship after human review | Write |
request_feature | A capability Cogny doesn't have: usually a tool missing from a connected integration, or a new platform. For an existing integration, the request is checked against the platform's API, and buildable ones go to Cogny's coding agent. Start a new chat or reconnect once it ships to see the new tool | Write |
contact_support | A message to a person on the Cogny team: billing, account, anything that isn't a bug or a missing feature. Available even without an active subscription | Write |
list_support_messages | The Cogny team's answers to what you or your agent filed, with each request's status. cogny_status says when a reply is unread. Reading a reply marks it read in the app too | Read-only |
reply_to_support | Answer in one of those threads. Pass still_broken: true when a fix didn't work and the request is reopened | Write |
A workspace can file up to 10 of these per 24 hours. Replies don't count toward that.
Your agent and the app's support inbox show the same thread. Threads are per person: teammates don't see each other's.
Authentication
Cogny uses OAuth 2.1 with authorization code flow and PKCE. When you add Cogny as a connector, your MCP client handles the OAuth flow automatically — you just sign in with your Cogny account.
Scopes: Access is scoped to your warehouse. You can only query data, reports, and tickets belonging to workspaces you're a member of.
Token refresh: Access tokens are short-lived and automatically refreshed by your MCP client.
Subscription Tiers
The tools available depend on your Cogny plan:
| Feature | Free, Solo, Cogny AI, Cogny Pro | Cloud |
|---|---|---|
| Connected platforms (Google Ads, Meta Ads, Shopify, ...), read and write | Full | Full |
| Context Tree | 50 nodes | Unlimited |
| Findings and task queue | Full | - |
| Growth Tickets | - | Full |
| BigQuery | - | Full |
| Reports & Charts | - | Full |
| Workspace Status, bugs, feature requests, support | Full | Full |
Every plan reaches the tools of the platforms you connect, with the same read and write tools on a $9 Solo plan as on Cloud. Cloud adds the BigQuery warehouse, reports and growth tickets. On Free, tool calls count against the 15 monthly MCP calls; on Solo, Cogny AI, Cogny Pro and Cloud they are unmetered under fair use (a burst guard of 100 calls per minute per workspace, answered with HTTP 429 and Retry-After).
When your own AI client calls a write tool over MCP, that client is the approval step: it asks you before running the tool, and Cogny executes the call it receives. To take a tool away from your agent altogether, set it to blocked under Settings → Integrations.
Evaluating Cogny for someone? The buying guide for agents covers plans, approvals, limits, billing and data protection, and Integrations and tools lists every tool of every integration with what it does and whether it reads or writes.
Troubleshooting
"Unknown tool" error
Your subscription tier may not include that tool. Use the cogny_status tool to check your workspace status and available features.
Authentication fails
- Ensure you're signing in with the email associated with your Cogny workspace
- Check that your workspace has an active subscription
- Try removing and re-adding the connector
No data returned from BigQuery
- Verify your BigQuery warehouse is connected in the Cogny dashboard
- Use
list_datasetsfirst to confirm available datasets - Check that your SQL query uses the correct dataset and table names
Connected platform tools missing
Connected platform tools only appear after you've linked the platform in your Cogny dashboard. Go to Settings > Integrations to connect Google Ads, Meta Ads, etc.
An analysis reads "working" for a long time
Most analyses finish in one to a few minutes. One that stops making progress (its job ended) is reported as failed on a later poll, within ten minutes, with nothing charged. Start it again.
Timeouts on long queries
BigQuery queries are capped at 500 rows. If your query is timing out, add LIMIT clauses or narrow your date range.
Privacy & Security
- All data stays within your Cogny workspace — Cogny does not share data between workspaces
- BigQuery queries are read-only (SELECT/WITH only) — your data cannot be modified
- OAuth tokens are scoped per-user and per-workspace
- See our Privacy Policy for full details
Support
- Email: support@cogny.com
- Documentation: cogny.com/docs
Reading this with an AI agent? Fetch the raw markdown at /docs/mcp/index.md or see llms.txt.