MCP & AgentsPart 2 of 2

    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

    1. Go to Settings → Connectors → Add custom connector
    2. Enter the name cogny and paste the server URL: https://app.cogny.com/mcp
    3. Click Add — Claude will prompt you to log in
    4. In the popup, select your warehouse and click Authorize
    5. Start chatting — Claude now has access to your marketing data
    Connect Cogny to Claude in about 30 seconds

    In ChatGPT

    1. Go to Settings → Apps → Advanced settings and enable Developer mode
    2. Click Create app, enter the name Cogny, and paste the server URL: https://app.cogny.com/mcp
    3. Set Authentication to OAuth, check the risk acknowledgment, and click Create
    4. In the popup, select your warehouse and click Authorize
    5. To use it: click + in the chat box → More → Cogny

    ChatGPT may prompt you to authorize twice on first use — this is normal.

    Connect Cogny to ChatGPT (about 3 minutes)

    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.

    ToolDescriptionSafety
    list_datasetsList all BigQuery datasets in your warehouseRead-only
    list_tablesList tables in a dataset (auto-groups GA4 sharded tables)Read-only
    inspect_schemaGet column definitions and CREATE TABLE statementRead-only
    execute_bigquery_sqlRun 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.

    ToolDescriptionSafety
    list_reportsList recent reports (SEO, Google Ads, CRO, etc.)Read-only
    get_reportGet full report content with all sectionsRead-only
    get_report_sectionGet a section's SQL and chart configRead-only
    show_report_sectionRender an interactive chart visualizationRead-only
    show_metricsDisplay configured core KPI metrics with trendsRead-only
    show_budgetShow ad spend vs. monthly budget targetsRead-only

    Example prompt: "Show me this week's SEO performance report"

    Growth Tickets

    Manage the actionable opportunities Cogny identifies from your data.

    ToolDescriptionSafety
    list_ticketsList tickets with status/type filteringRead-only
    get_ticketGet 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 onRead-only
    get_commentsGet the ticket thread — agent notes and human replies, newest firstRead-only
    get_ticket_source_contextGet the report/analysis that created a ticketRead-only
    get_winner_statusLong-term impact history of a winner ticket (trend, cumulative USD impact, check schedule)Read-only
    create_ticketCreate a new growth ticket: manual, agent, or code (execution_target: "code", with repo when the workspace has several connected)Write
    update_ticket_statusMove 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_commentAdd a comment to a ticketWrite
    add_ticket_feedbackTell Cogny a ticket is useful, already done, wrong, duplicate, or out of scope — feeds the ticket generator; optionally rejects itWrite
    assign_ticketAssign or unassign a ticketWrite
    link_pr_to_ticketLink a GitHub PR for auto-status updatesWrite

    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.

    VerdictMeans
    usefulWorth doing as written
    already_doneThe work described is already in place
    not_actionableToo vague or underspecified to act on
    incorrect_dataThe numbers or the premise are wrong
    duplicateAlready covered by another ticket
    out_of_scopeNot 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 done can't be rejected — leave feedback without reject; 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).

    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.

    ToolDescriptionSafety
    create_review_linkMake a review link for a ticket, with who it is for, what to check and the page it opens on. The URL is returned onceWrite
    list_review_linksA ticket's review links, whether each still works, and (with include_comments) the comments made through itRead-only
    revoke_review_linkTurn a link off at once; its comments stay on the ticketWrite

    Organizational Context

    A hierarchical knowledge graph for company strategy, competitor intel, and team knowledge.

    ToolDescriptionSafety
    browse_context_treeList child nodes at a path (or root categories)Read-only
    read_context_nodeRead full node content with backlinksRead-only
    search_contextFull-text search across the context treeRead-only
    get_context_tree_overviewHigh-level structure overviewRead-only
    write_context_nodeCreate or update a context node (upsert)Write
    archive_context_nodeSoft-delete a context nodeDestructive

    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.

    ToolDescriptionSafety
    list_integrationsAvailable and connected integrations; connected ones include their server_idRead-only
    add_custom_mcp_serverRegister 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 onlyWrite
    refresh_mcp_discoveryRe-list a server's tools after it changesRead-only
    list_integration_toolsEvery connected integration's tools with their input schemas, and whether each reads or writesRead-only
    call_integration_toolRun a connected integration's read-only tool by its full nameRead-only
    call_integration_write_toolRun a connected integration's tool that changes something, by its full nameDestructive

    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.

    ToolDescriptionSafety
    run_cogny_analysisStart 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 themSpends credits
    get_cogny_analysisStatus, 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 pollsRead-only
    cancel_cogny_analysisStop an analysis by task_id. It stops at its next step and is charged only for what it used until thenStops 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), and emphasis picks 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_check in 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).

    ToolDescriptionSafety
    create_videoStart 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 titleSpends credits
    get_videoStatus, 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_videoStop 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 deliveredStops 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.

    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.

    ToolDescriptionSafety
    create_carouselStart 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 isSpends credits
    get_carouselStatus, 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 versionRead-only
    cancel_carouselStop a carousel by task_id. It stops at its next step and is charged only for the slide previews already madeStops 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.

    ToolDescriptionSafety
    list_automationsAutomations with schedule, timezone, grants and the exact pre-approved tool list each run getsRead-only
    create_automationName, instructions, crontab, IANA timezone (default Europe/Stockholm), write-tool action_grants with optional pinned constraints, optional explicit read_tools. Created disabled unless you enable itWrite
    update_automationChange any of those fields; grant and read-tool lists are replaced as a whole. Enabling requires a crontabWrite
    run_automationRun now, with or without a schedule. dry_run: true (the default) runs with no write authorityWrite
    get_automation_runStatus, error and condensed transcript of a run, by ticket idRead-only
    schedule_ticketOne 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 workspaceWrite
    list_scheduled_ticketsWaiting (or, with include_finished, past) scheduled runs, when each runs and the ticket it becameRead-only
    cancel_scheduled_ticketCancel a scheduled run that hasn't startedWrite

    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

    ToolDescriptionSafety
    cogny_statusCheck subscription, connected channels, and featuresRead-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.

    ToolDescriptionSafety
    report_bugA 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 reviewWrite
    request_featureA 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 toolWrite
    contact_supportA 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 subscriptionWrite
    list_support_messagesThe 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 tooRead-only
    reply_to_supportAnswer in one of those threads. Pass still_broken: true when a fix didn't work and the request is reopenedWrite

    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:

    FeatureFree, Solo, Cogny AI, Cogny ProCloud
    Connected platforms (Google Ads, Meta Ads, Shopify, ...), read and writeFullFull
    Context Tree50 nodesUnlimited
    Findings and task queueFull-
    Growth Tickets-Full
    BigQuery-Full
    Reports & Charts-Full
    Workspace Status, bugs, feature requests, supportFullFull

    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

    1. Ensure you're signing in with the email associated with your Cogny workspace
    2. Check that your workspace has an active subscription
    3. Try removing and re-adding the connector

    No data returned from BigQuery

    1. Verify your BigQuery warehouse is connected in the Cogny dashboard
    2. Use list_datasets first to confirm available datasets
    3. 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

    Reading this with an AI agent? Fetch the raw markdown at /docs/mcp/index.md or see llms.txt.