Provider REST API

Analytics

Connect Claude to Hex

Find Hex projects, run them and read run status, read cells and their output, and ask the Hex agent questions in threads. Toolspoke puts 16 of its actions behind one MCP endpoint that Claude, Cursor, and Codex all speak.

Connection
Provider REST API
Authentication
API token
Actions exposed
16
What a call bills
Nothing
Adapter
Maintained by Toolspoke

Connected in three steps

  1. 1

    Install Hex

    Open the marketplace in your workspace, add Hex to the project your agents work in, and it appears on the gateway immediately.

  2. 2

    Connect the credential

    Authenticate with api token. Where to get one, and what it has to be able to reach, is the next section.

  3. 3

    Point your agent at the gateway

    Give your client one address, https://toolspoke.com/mcp. Claude Code takes it as a command, Claude and Claude Desktop add it as a custom connector, and Cursor, Codex and VS Code each read it from a config file of their own.

.mcp.json
{
  "mcpServers": {
    "toolspoke": {
      "type": "http",
      "url": "https://toolspoke.com/mcp"
    }
  }
}

One block covers every tool you have installed. Hex shows up in the client as soon as your policy allows it, and so does everything else you install later.

Where the address goes, per client

Claude Code

Run it in your project, then /mcp to sign in

claude mcp add --transport http toolspoke https://toolspoke.com/mcp
Claude and Claude Desktop

Settings, then Connectors, then Add custom connector

https://toolspoke.com/mcp
Cursor

~/.cursor/mcp.json, or .cursor/mcp.json for one project

{ "mcpServers": { "toolspoke": { "url": "https://toolspoke.com/mcp" } } }
Codex

~/.codex/config.toml

[mcp_servers.toolspoke]
url = "https://toolspoke.com/mcp"
VS Code

.vscode/mcp.json, or the MCP: Add Server command

{ "servers": { "toolspoke": { "type": "http", "url": "https://toolspoke.com/mcp" } } }

What Hex asks for

API token. You provide it once, when you install the connector. Toolspoke encrypts it at rest and decrypts it only for the length of a single call, and the gateway attaches it to the outbound request itself, so it is never part of the arguments an agent sends.

API tokenRequired
Hex → user settings → Account → API keys → New Token. A personal token (hxtp_, Editor role or higher) acts as you and must expire. An admin can instead create a workspace token (hxtw_) on the workspace settings page and pick its scopes: Read projects for reads only, Run projects to also allow run_project. Rate limit: 60 requests a minute.
hxtp_… or hxtw_…
Hex URLOptional
Leave blank for the standard multi-tenant Hex. EU, HIPAA and single-tenant workspaces use their own address, e.g. https://eu.hex.tech.
https://app.hex.tech

What Claude can do in Hex

16 actions, each one declared and named by the connector rather than discovered at runtime. A workspace policy grants a person all of them, a hand-picked selection, everything on the read side, everything on the write side, or none.

Reads
12Reads
Writes
3Writes
Destructive
1Destructive

Reads

12

Fetches data and changes nothing.

  • get_me

    Return the user this token belongs to. A workspace token returns no user details.

  • list_projects

    List the projects this token can see, newest first by default. Start here - the project id is what running a project and reading its cells take. It is also the install's connection test, because it needs a token that can read projects.

  • get_project

    Read one project's metadata - title, owner, status, schedules and when it was last published.

  • get_run_status

    Read the status of one project run - PENDING, RUNNING, COMPLETED, ERRORED or KILLED - with its timings.

  • list_runs

    List the recent API-triggered and scheduled runs of one project, newest first.

  • list_cells

    List the cells in one project's draft - their type, label and source (SQL, Python, Markdown). Not written to the audit log, because the source is other people's work and can embed data.

  • get_cell

    Read one cell's type, label and source.

  • get_cell_output

    Read the latest output of one cell - the rows a SQL cell returned, or a code cell's result. Hex marks this endpoint unstable. Not written to the audit log, because the output is the workspace's data.

  • list_data_connections

    List the workspace's data connections - the warehouses and databases projects query - by name, type and id. Credentials are not returned.

  • list_collections

    List the workspace's collections, the folders projects are grouped into. A collection id narrows list_projects.

  • list_users

    List the workspace's users by name and email, optionally only the members of one group.

  • get_thread_messages

    Read the messages in one thread - the questions asked and the Hex agent's answers. Not written to the audit log, because the answers carry the workspace's data.

Writes

3

Creates or updates something on the other side.

  • run_project

    Run a published project, optionally with input parameter values. Returns a runId and a status URL; poll get_run_status until it finishes. It runs the project's queries against its data connections and counts toward the 25 concurrent kernels per user. update_published_results replaces what viewers of the published app see.

  • create_thread

    Ask the Hex agent a data question in a new thread. It answers asynchronously; read the reply with get_thread_messages until the thread is IDLE. The question and the answer are stored in Hex as a thread under the token's user.

  • continue_thread

    Ask a follow-up question in an existing thread. The thread must be idle - Hex does not queue a second question behind a running one.

Destructive

1

Deletes or permanently alters something. Worth granting on purpose.

  • cancel_run

    Cancel a project run that is still going. Destructive because the run's work is lost and cannot be resumed - it has to be started again from the beginning.

What it will not do

Enforced by the gateway rather than left to convention, which is why each of these can be stated flatly.

It cannot call anything else
The 16 actions above are the whole of it. A call to any other name is refused before it reaches Hex rather than forwarded on, and connecting your account does not add to the list: it is fixed by the connector, not discovered at run time.
It reaches no further than your credential
Toolspoke holds no access to Hex of its own. Every call carries the credential you stored and nothing besides, so whatever that credential cannot reach, this connector cannot reach either.
It never hears from Hex
Nothing is pushed to it. There is no webhook, no subscription and no polling, so this connector cannot notice by itself that something changed in Hex. An agent has to ask.
It does not smooth over provider limits
Toolspoke does not retry, queue or back off around Hex's own rate limits. A call that Hex refuses comes back to the agent as a failed call.

Before you connect it

What can Claude do in Hex?

16 named actions: 12 that only read, 3 that write and 1 that delete or permanently alter something. They include get_me, list_projects and get_project. Nothing outside that list is reachable: the connector declares each operation by name rather than proxying whatever an agent asks for.

What credentials does the Hex connector need?

API token. The connector asks for api token, and optionally hex url. Values are encrypted at rest and attached to the outbound request by the gateway, so they are never part of the arguments an agent sends and never reach the audit log.

Does the Hex connector work with Cursor and Codex, or only Claude?

Any client that speaks MCP, and every one of them gets the same 16 actions. There is a single address, https://toolspoke.com/mcp. Claude Code adds it with claude mcp add --transport http, Claude and Claude Desktop take it as a custom connector in settings, Cursor reads it from .cursor/mcp.json, Codex from ~/.codex/config.toml, and VS Code from .vscode/mcp.json. Each of them signs in to the gateway itself, so there is no key to paste.

What does the Hex connector not do?

The 16 actions above are the whole of it. A call to any other name is refused before it reaches Hex rather than forwarded on, and connecting your account does not add to the list: it is fixed by the connector, not discovered at run time. Toolspoke holds no access to Hex of its own. Every call carries the credential you stored and nothing besides, so whatever that credential cannot reach, this connector cannot reach either. Nothing is pushed to it. There is no webhook, no subscription and no polling, so this connector cannot notice by itself that something changed in Hex. An agent has to ask. Toolspoke does not retry, queue or back off around Hex's own rate limits. A call that Hex refuses comes back to the agent as a failed call.

Can I limit which actions an agent can call?

Yes, in two places. The project switches Hex's actions on and off one at a time, for everyone in the project at once, and the screen groups them by read, write and destructive so turning off everything that deletes is one click. An individual agent key can then be narrowed further, to particular toolkits in a project and to particular actions in a toolkit. Whatever it was granted, a key never reaches a project its owner cannot.

What gets recorded when an agent calls Hex?

Every attempt, with the agent that made it and the person that agent belongs to, the full request payload, the response payload, the status, the duration, and what the call cost in sandbox time and model tokens. Values whose key names a secret are masked out before the record is shown to anyone. An operation the connector marks as not retained never has its response body written at all, so the gateway keeps no second copy of what was read.