Mode Analytics MCP server Let your AI agent refresh your Mode reports.

Connect Mode to Claude, ChatGPT or a script. Your agent runs reports, reads the result tables and fixes failing queries. It also sets up the Slack and email digests, with no API key to create.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Mode
Mode Analytics logo Mode Analytics Cloud Browser

14 tools Read and write

Reports to Slack

What can you automate in Mode? Use an AI agent, a workflow or a script.

  • Run a report and read the numbers

  • Find the report that answers a question

  • Diagnose a failed scheduled run

  • Schedule a Slack or email digest

  • Share a report to a channel once

  • Describe reports that have no description

Official REST API

Does Mode have an MCP server or an API? An API on paid plans, no MCP server.

Mode has a REST API for reports, queries, runs, exports, schedules and subscriptions, and no MCP server of its own that we found (checked 6 Nov 2026). Cotlet gives your agent 14 Mode tools over MCP for chat apps and over REST for scripts. There is no API key or developer setup, it works inside the ChatGPT and Claude apps, and it runs 24/7 on our servers.

  • Mode's plan page lists "API access" under Pro and none under Studio. Admins create Workspace tokens; once an Admin turns on Member keys, each user can create their own. Both expire after 90 days by default.
  • Mode webhooks post three events (report created, run started, run finished) to a URL you choose. The payload is the event name and a link to the run.
  • The API has no endpoint to share a report once to Slack or email. It has schedules and subscriptions, and the Share button in the app does the one-off send.
Mode's REST API, a community MCP server and Cotlet compared
What you need Mode REST APImode-mcp on GitHubCotlet
List reports, read SQL and run results Yes, you write the calls Yes Yes
Start a report run Yes No, left out on purpose Yes, after your OK
Create a schedule with Slack or email Yes, schedules and subscriptions No Yes, after your OK
Share a report once to Slack or email No No Yes, after your OK
Works in the ChatGPT and Claude apps without a developer setup No, you build the agent layer Local install with a key and secret Yes
Runs 24/7 without your computer If you host your script No, runs on your computer Yes, hosted

Checked 6 Nov 2026. Sources: Mode Developer: API introduction · Mode Help: API tokens · Mode: Compare plans · Mode Help: Webhooks · github.com/nataliemona/mode_mcp

Set up once

How does Cotlet connect to Mode? One account, two ways to connect.

  1. 1Sign in to Mode

    Use your own account in its Cotlet Cloud Browser.

  2. 2Choose MCP or REST

    Connect your agent or create a Cotlet API key.

  3. 3Run your workflow

    Ask your agent or send an HTTP request.

We never keep your Mode password, and no query change, schedule or Slack post happens until you approve it. Who can see your session

Any MCP client

Connect Mode to your agent or workflow

Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.

  1. 1

    Sign in to Mode. Sign up, sign in to Mode in its Cloud Browser, then press Enable for agents.

  2. 2

    Add the Cotlet address. Add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.

  3. 3

    Approve the connection. Chat apps ask you to sign in to Cotlet. Editors, n8n and scripts use an API key from the console.

One shared address, https://cotlet.dev/mcp/v1, also carries Mode next to your other apps. If you enable Mode after connecting, refresh the connector so the new tools show up.

Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-mode-analytics \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-mode-analytics": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-mode-analytics]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: mode_analytics_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: mode_analytics_write
Scripts and HTTP

How to use the Mode REST API

Create your Cotlet API key

Sign in to your Mode account in its Cotlet Cloud Browser and enable the app for agents. Editing and scheduling a report need edit access to it in Mode.

Create a Cotlet API key with access to Mode and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store. You do not create a Mode token.

Make your first Mode API request

cURL: list_reports

curl "https://cotlet.dev/api/v1/mode-analytics/reports?workspace=acme-analytics&collection=Growth" \
  -H "Authorization: Bearer $COTLET_API_KEY"

Read reports and continue the list

A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt

{
  "status": "success",
  "app": "mode-analytics",
  "tool": "list_reports",
  "result": {
    "reports": [
      {
        "token": "a1b2c3d4e5f6",
        "title": "Weekly signups by channel",
        "description": "Signups per channel, last 8 weeks",
        "collection": "Growth",
        "last_edited": "2026-11-03",
        "latest_run": "succeeded"
      },
      {
        "token": "b7c8d9e0f1a2",
        "title": "Trial to paid conversion",
        "description": "",
        "collection": "Growth",
        "last_edited": "2026-09-18",
        "latest_run": "succeeded"
      }
    ],
    "next_cursor": null
  }
}

Read result.reports and pass result.next_cursor unchanged as cursor until it is empty. Keep the report token in your workflow so later runs update the same report.

Run results come back as column names and rows. When a result is cut at your limit, the response says so with truncated.

Mode workflows for agents and automations

Mode workflows you configure
ToolConnect throughExample workflow
n8nHTTP RequestCall run_report on a schedule, then get_run_results, and write the rows to a sheet or database.
Python or Node.jsREST APIPage through list_report_runs for each report and collect failed runs with their error text.
MakeHTTP > Make a requestCall list_schedules and post a weekly list of what each report delivers and where.

Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads and changes Mode; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.

The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.

7 read, 7 write

Mode API endpoints and MCP tools

Collections and reports7

Reports are found by Collection or by words in the title. No tool deletes a report; archive and unarchive are both here.

  • list_collections Lists the Collections of a Workspace that your account can open. read

    Returns each Collection with its name, whether it is your personal Collection and how many reports it holds. Collections you cannot open are not listed. Pass a name to list_reports to look inside one.

    MCP callmode_analytics_read → list_collections

    REST endpointGET https://cotlet.dev/api/v1/mode-analytics/collections

    Parameters

    Parameters: list_collections
    NameTypeDescription
    workspace string required string Workspace username, the first part of the URL (app.mode.com/{workspace}).

    Example input

    {
      "workspace": "workspace"
    }

    Example response

    {
      "collections": [
        {
          "name": "Growth",
          "token": "c4f1a9b2d7e3",
          "personal": false,
          "reports": 14
        },
        {
          "name": "Finance",
          "token": "8d2b6e0a51c9",
          "personal": false,
          "reports": 9
        },
        {
          "name": "Maya Chen",
          "token": "f3a7c1e8b406",
          "personal": true,
          "reports": 3
        }
      ]
    }
  • list_reports Lists the reports in a Collection or finds reports by words in the title. read

    Returns each report with its token, title, description, Collection, last edited date and the state of its latest run. Without collection or query it lists the reports you can open in the Workspace. Pass next_cursor back as cursor until it is empty.

    MCP callmode_analytics_read → list_reports

    REST endpointGET https://cotlet.dev/api/v1/mode-analytics/reports

    Parameters

    Parameters: list_reports
    NameTypeDescription
    workspace string required string Workspace username, the first part of the URL.
    collection string string Collection name or token from list_collections.
    query string string Words to search for in report titles.
    archived boolean boolean true lists archived reports instead of active ones.
    cursor string string Next page cursor from the previous call.

    Example input

    {
      "workspace": "workspace"
    }

    Example response

    {
      "reports": [
        {
          "token": "a1b2c3d4e5f6",
          "title": "Weekly signups by channel",
          "description": "Signups per channel, last 8 weeks",
          "collection": "Growth",
          "last_edited": "2026-11-03",
          "latest_run": "succeeded"
        },
        {
          "token": "b7c8d9e0f1a2",
          "title": "Trial to paid conversion",
          "description": "",
          "collection": "Growth",
          "last_edited": "2026-09-18",
          "latest_run": "succeeded"
        }
      ],
      "next_cursor": null
    }
  • get_report Reads one report: title, description, Collection, creator and its queries. read

    Returns the report details with the name and token of each query and the data source it runs on. It also returns who created the report, when it was last edited and whether it is archived. Use get_query for the SQL.

    MCP callmode_analytics_read → get_report

    REST endpointGET https://cotlet.dev/api/v1/mode-analytics/report

    Parameters

    Parameters: get_report
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "token": "a1b2c3d4e5f6",
      "title": "Weekly signups by channel",
      "description": "Signups per channel, last 8 weeks",
      "collection": "Growth",
      "created_by": "Maya Chen",
      "last_edited": "2026-11-03",
      "archived": false,
      "queries": [
        {
          "name": "Signups by channel",
          "token": "q9z8y7x6w5v4",
          "data_source": "Production warehouse"
        }
      ]
    }
  • get_query Reads the SQL of one query in a report. read

    Returns the query name, its SQL as written in the query editor and its data source. With no query it returns all queries of the report in the order the report lists them.

    MCP callmode_analytics_read → get_query

    REST endpointGET https://cotlet.dev/api/v1/mode-analytics/query

    Parameters

    Parameters: get_query
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.
    query string string Query name or token from get_report. Leave out to read every query in the report.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "queries": [
        {
          "name": "Signups by channel",
          "token": "q9z8y7x6w5v4",
          "data_source": "Production warehouse",
          "sql": "SELECT channel, COUNT(*) AS signups FROM signups WHERE created_at >= CURRENT_DATE - 56 GROUP BY channel"
        }
      ]
    }
  • update_report Changes the title or the description of a report. write

    Saves the new title or description and returns the old ones. It reaches no one and one more call undoes it, so it needs no confirmation.

    MCP callmode_analytics_write → update_report

    REST endpointPATCH https://cotlet.dev/api/v1/mode-analytics/report

    Parameters

    Parameters: update_report
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.
    title string string New report title.
    description string string New report description.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "token": "b7c8d9e0f1a2",
      "title": "Trial to paid conversion",
      "description": "Share of trials that become paid, by signup week",
      "previous_description": ""
    }
  • archive_report Archives a report so it leaves its Collection. write

    Archives the report. It reaches no one and unarchive_report puts it back, so it needs no confirmation. Archived reports can still be found with list_reports and archived set to true.

    MCP callmode_analytics_write → archive_report

    REST endpointPOST https://cotlet.dev/api/v1/mode-analytics/report/archive

    Parameters

    Parameters: archive_report
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "token": "c2d3e4f5a6b7",
      "title": "Pricing test, Q1",
      "archived": true
    }
  • unarchive_report Brings an archived report back. write

    Unarchives the report so it shows in its Collection again. It reaches no one, so it needs no confirmation.

    MCP callmode_analytics_write → unarchive_report

    REST endpointPOST https://cotlet.dev/api/v1/mode-analytics/report/unarchive

    Parameters

    Parameters: unarchive_report
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "token": "c2d3e4f5a6b7",
      "title": "Pricing test, Q1",
      "archived": false
    }

Runs, results and query edits4

A run uses your own data source. Results can be cut at a row limit, and the answer says when they were.

  • list_report_runs Lists the runs of a report, with the state of each. read

    Returns the run history as the View Details page shows it: run token, started time, finished time and state. A failed run carries the error text from the run. Use it to see whether the last scheduled run worked.

    MCP callmode_analytics_read → list_report_runs

    REST endpointGET https://cotlet.dev/api/v1/mode-analytics/report-runs

    Parameters

    Parameters: list_report_runs
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.
    cursor string string Next page cursor from the previous call.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "runs": [
        {
          "token": "r5t6y7u8i9o0",
          "started": "2026-11-05T07:00:12Z",
          "finished": "2026-11-05T07:00:41Z",
          "state": "succeeded"
        },
        {
          "token": "r1q2w3e4r5t6",
          "started": "2026-11-04T07:00:10Z",
          "finished": "2026-11-04T07:00:19Z",
          "state": "failed",
          "error": "column \"channel\" does not exist"
        }
      ],
      "next_cursor": null
    }
  • get_run_results Reads the result table of one query in a report run. read

    Returns the column names, the rows and the total row count of the run, with the time the run finished. It reads a run that already exists and starts nothing; use run_report for fresh data.

    MCP callmode_analytics_read → get_run_results

    REST endpointGET https://cotlet.dev/api/v1/mode-analytics/run-results

    Parameters

    Parameters: get_run_results
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.
    query string required string Query name or token from get_report.
    run string string Run token from list_report_runs. Defaults to the latest successful run.
    limit integer integer Most rows to return. The result says when it was cut.

    Example input

    {
      "report": "report",
      "query": "query"
    }

    Example response

    {
      "run": "r5t6y7u8i9o0",
      "finished": "2026-11-05T07:00:41Z",
      "columns": [
        "channel",
        "signups"
      ],
      "rows": [
        [
          "Organic",
          412
        ],
        [
          "Paid",
          268
        ],
        [
          "Referral",
          96
        ]
      ],
      "total_rows": 3,
      "truncated": false
    }
  • run_report Starts a new run of a report and waits for it to finish. writeasks first

    Returns the run token and its final state, succeeded or failed, with the error text when it failed. The run sends the report queries to your data source, so it uses your warehouse. It does not email or post anywhere. By default you confirm each call; you can switch that off for this tool.

    MCP callmode_analytics_write → run_report

    REST endpointPOST https://cotlet.dev/api/v1/mode-analytics/report/run

    Parameters

    Parameters: run_report
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.
    parameters object object Parameter values as name and value, for reports that have parameters.

    Example input

    {
      "report": "a1b2c3d4e5f6",
      "parameters": {
        "weeks": 8
      }
    }

    Example response

    {
      "run": "r9p8o7i6u5y4",
      "state": "succeeded",
      "started": "2026-11-05T09:12:03Z",
      "finished": "2026-11-05T09:12:31Z"
    }
  • update_query Changes the name or the SQL of one query in a report. writeasks first

    Saves the change in the query editor and returns the SQL as it was before, so one more call puts it back. The change reaches everyone who opens the report and every later scheduled run. It does not run the query; call run_report for that. By default you confirm each call; you can switch that off for this tool.

    MCP callmode_analytics_write → update_query

    REST endpointPATCH https://cotlet.dev/api/v1/mode-analytics/query

    Parameters

    Parameters: update_query
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.
    query string required string Query name or token from get_report.
    name string string New query name.
    sql string string New SQL for the query.

    Example input

    {
      "report": "report",
      "query": "query"
    }

    Example response

    {
      "query": "q9z8y7x6w5v4",
      "name": "Signups by channel",
      "previous_sql": "SELECT channel, COUNT(*) AS signups FROM signups GROUP BY channel",
      "saved": true
    }

Schedules and sharing3

Slack needs Mode connected to your Slack, and a private channel needs the @Mode bot added. Email recipients must be Workspace members or in a claimed domain unless external sharing is on.

  • list_schedules Lists the schedules of a report with their delivery settings. read

    Returns each schedule with its name, refresh frequency, parameter values and where it delivers: email subscribers and Slack channels. A report can have several schedules for different groups.

    MCP callmode_analytics_read → list_schedules

    REST endpointGET https://cotlet.dev/api/v1/mode-analytics/schedules

    Parameters

    Parameters: list_schedules
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "schedules": [
        {
          "name": "Monday digest",
          "frequency": "Every Monday at 08:00",
          "parameters": {},
          "delivers_to": {
            "slack": [
              "#growth"
            ],
            "email": 2
          },
          "created_by": "Maya Chen"
        }
      ]
    }
  • create_schedule Adds a schedule to a report that runs it and delivers the results. writeasks first

    Creates the schedule from the report header, Schedule then New Schedule, and returns its name and where it delivers. The schedule keeps running until the report or the schedule is deleted. Recipients must be Workspace members or in a claimed domain unless external sharing is on. By default you confirm each call; you can switch that off for this tool.

    MCP callmode_analytics_write → create_schedule

    REST endpointPOST https://cotlet.dev/api/v1/mode-analytics/schedules

    Parameters

    Parameters: create_schedule
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.
    name string required string Schedule name that describes its purpose.
    frequency string required string Refresh frequency in words, for example "every Monday at 8:00". The tool picks the matching choice in the Schedule form and fails if there is none.
    parameters object object Parameter values for the scheduled runs.
    slack_channel string string Slack channel to post the report to. A private channel needs the @Mode bot added.
    subscribers array array Email addresses to subscribe. They always get an email that says they were subscribed.

    Example input

    {
      "report": "report",
      "name": "Jane Doe",
      "frequency": "frequency"
    }

    Example response

    {
      "report": "a1b2c3d4e5f6",
      "name": "Monday digest",
      "frequency": "Every Monday at 08:00",
      "delivers_to": {
        "slack": [
          "#growth"
        ],
        "email": 1
      },
      "created": true
    }
  • share_report Sends a report once to a Slack channel or to email addresses. writeasks first

    Uses the Share button of the report. The post or email goes out immediately and includes your name, the report title and a link, and a preview image in Slack unless an admin turned previews off. Everyone in the channel sees the message, but only people with Mode access can open the link. By default you confirm each call; you can switch that off for this tool.

    MCP callmode_analytics_write → share_report

    REST endpointPOST https://cotlet.dev/api/v1/mode-analytics/report/share

    Parameters

    Parameters: share_report
    NameTypeDescription
    report string required string Report token, the last part of the report URL (app.mode.com/{workspace}/reports/{token}). list_reports returns it.
    slack_channel string string Slack channel name. Needs Mode connected to your Slack. A private channel needs the @Mode bot added.
    emails array array Email addresses. Recipients must be Workspace members or in a claimed domain unless external sharing is on.
    message string string Short message to add.
    include_links boolean boolean false leaves the report links out. Default true.

    Example input

    {
      "report": "report"
    }

    Example response

    {
      "report": "a1b2c3d4e5f6",
      "sent_to": {
        "slack": "#growth",
        "email": []
      },
      "sent": true
    }
Encrypted, revocable

Who can see my Mode session, and how do I revoke it?

  • What we store

    Your signed-in Mode profile, encrypted with AES-256-GCM, in the EU. Not the password.

  • What your agent gets

    The 14 Mode tools. Never the cookie.

  • What the session sees

    Your Workspace: the reports, queries and schedules you can open.

  • What no tool touches

    Data sources, members, billing, API keys, password and two-factor.

  • If Mode asks to verify

    A new device may need a code. You type it in, we never do.

  • How to cut access

    Disable for agents or reset the browser in the console, or sign out in Mode.

Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.

Your own access

Whose permissions does the agent use? Yours, as in the Mode app.

Mode's own Member API keys follow each user's access, and an Admin has to switch them on first (Mode Help: API tokens, checked 6 Nov 2026). Cotlet works in your signed-in Mode session, so it follows your access the same way and needs no key.

Schedules and Slack or email sharing follow your Mode plan. Mode's plan page lists them under Pro, not Studio (checked 6 Nov 2026).

How your Mode access carries over

  • Your own Mode account, signed in by you
  • Edit access to a report is needed to change or schedule it
  • One Cloud Browser with its own cookies for your Workspace
  • Query edits, runs, schedules and shares wait for your OK
  • No tool deletes a report or a query
Tested every 12 h

What happens when Mode changes? We repair the tool; your prompts stay the same.

between tests of the Mode tools
12 h
for a call to a Mode tool paused for repair
$0

When Mode moves a button or renames a field, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.

4 tools ask first

Approvals, undo and mistakes Nothing goes out until you say so.

  1. 01 Reads the report Title, queries and the state of the latest run.
  2. 02 Waits for your OK The run or schedule shows up in your Cotlet console first.
  3. 03 Does it in Mode Starts the run, saves the query or sets the schedule.
  4. 04 Reports the result Run state and time, or the old SQL, or where it delivers.
Which Mode actions can be undone
ActionUndo
Run a reportNo, but the run is kept in the report's run history
Edit a queryPut the old SQL back; the tool returns it
Change a title or descriptionChange it back; the tool returns the old text
Archive a reportUnarchive it with one call
Create a scheduleDelete the schedule in Mode
Share to Slack or emailNo, the post or email is out

4 of 14 tools ask first: run_report, update_query, create_schedule and share_report. Reads, archiving and title changes reach no one, so they run at once. Switch the wait off per tool for a scheduled run.

A schedule keeps running until the report or the schedule is deleted.

MCP call
{
  "name": "run_report",
  "arguments": {
    "report": "a1b2c3d4e5f6",
    "parameters": {
      "weeks": 8
    }
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/mode-analytics/report/run \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"report":"a1b2c3d4e5f6","parameters":{"weeks":8}}'
Tool output
{
  "run": "r9p8o7i6u5y4",
  "state": "succeeded",
  "started": "2026-11-05T09:12:03Z",
  "finished": "2026-11-05T09:12:31Z"
}

Scripts and cron jobs reach the same tools over REST with the same key and price. A failed call costs nothing. The tools table lists the REST path of each tool.

Pay per call

How much does the Mode MCP server cost?

About $16 a monthfor one analyst refreshing a report every workday, 2,800 credits. Your Mode plan is billed by Mode as before.

A month of Mode jobs for one analyst, in credits
JobCallsCredits
Refresh a report and read the numbers, workdays3 × 20600
Check failed scheduled runs, weekly3 × 4120
Find the report that answers a question5 × 8400
New Slack digest schedule2 × 360
Archive old reports, monthly12 × 1120
Cloud Browser, 30 days1,500
Total2,800
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • No Mode API token to create or rotate

The month is our example: about 130 calls, with one report refreshed on 20 workdays. We found no public figure for a typical Mode workspace. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

Mode MCP server on GitHub, the Mode API or hosted: which to use One community server so far.

Other ways to reach Mode from an agent, checked 6 Nov 2026
OptionWhat it doesWhere it stops
nataliemona/mode_mcpPython MCP server on the Mode API, 15 tools: browse, read results, create and edit reports and queries, archive. MIT licence.Runs on your computer with a token and secret. No run, schedule or share tool. 0 stars, last commit 16 Oct 2026.
Pipedream Mode MCPA hosted server on Pipedream Connect.Its page showed no list of Mode tools when we checked.
Mode REST APIOfficial. Reports, queries, runs, exports, schedules and subscriptions, with JSON or CSV results.You write and host the code. Mode's plan page lists API access under Pro. No one-off share to Slack or email.
Mode webhooksOfficial. Posts to your URL when a report is created or a run starts or finishes.The payload is the event name and a link to the run.

If you have a developer and want one narrow job, the Mode API or the GitHub server is free to use. Cotlet adds what they leave to you: no API key to create, a connector that works in the ChatGPT and Claude apps, hosting around the clock, one account for many apps, and run, schedule and share tools that ask before they act.

EU company, since 2019

Who runs Cotlet A company you can look up.

Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the Mode tools.

Mode Analytics MCP: questions

How do I connect Mode Analytics to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Mode Analytics once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Mode Analytics account through Cotlet, in their phone apps too.

What can ChatGPT do in Mode Analytics?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Mode Analytics: refresh a report and read the numbers; send a report to Slack every Monday; find the report that answers a question. You ask in plain words, and anything that reaches other people waits for your OK first.

Can I use the Mode API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.

How do I get access?

Create a free account at https://cotlet.dev, open Mode under Integrations in the console and sign in to Mode in its Cloud Browser. The trial starts with your first app, no card asked.

Do I need a paid Mode plan or an API token?

No token is needed, because Cotlet works in your own signed-in Mode account. Mode requires a paid plan for its own API. Its plan comparison lists schedules and Slack and email sharing under Pro, and the Studio column lists no API access, so those tools follow your plan. Mode: Compare plans, checked 5 Nov 2026.

Who can schedule a report or share it to Slack?

Anyone with edit access to the report can schedule it. Sharing to Slack needs Mode connected to your Slack workspace, and a private channel needs the @Mode bot added first. Without the access, the call fails and nothing is sent. Mode Help: Report scheduling and sharing, checked 5 Nov 2026.

What happens when a scheduled report fails?

Mode emails the report creator, the schedule creator and the last editor on every failed run until the error is fixed or the schedule is deleted. Your agent can read the failed run with list_report_runs and the SQL with get_query. Mode Help: Report scheduling and sharing, checked 5 Nov 2026.

Does Mode have webhooks?

Yes. Mode posts to a URL you choose when a report is created or a run starts or finishes, with the event name and a link to the run (Mode Help: Webhooks, checked 6 Nov 2026). Cotlet does not receive them; run your agent on a schedule or point the webhook at your own workflow.

Can the agent delete a report?

No. It can archive a report and bring it back with unarchive_report. No tool deletes a report or a query.

Is the MCP server different from the REST API?

Only the door is different. Both expose the same 14 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with Mode?

No. Cotlet is independent and not affiliated with Mode Analytics, Inc. or ThoughtSpot.

Give your agent access to Mode.

Free 7-day trial with 2,000 credits, no card needed.