Docs & Guides / AI Tool Access (MCP)
AI Tool Access (MCP)
Connect Claude, Codex, Cursor or another MCP client to your campaigns with a personal access token.
FTTHelper runs an MCP server. MCP is the way AI tools such as Claude Desktop, Claude Code, Codex and Cursor connect to outside services. Connect one and it can read your campaigns, and write to them, as you.
Who can use it
AI tool access comes with Hero. The older Mythic plan, which is no longer sold, includes it too. On a Free account you cannot create a token, and an existing token stops working if the account leaves those plans.
The server is hosted, so there is nothing to install. It is not listed in any AI tool’s app directory, and there is no “sign in with FTTHelper” option. You connect by pasting a token into your tool’s settings.
Create a token
- Open AI tool access in Settings.
- Name the token after the tool you are connecting, and press Create token.
- Copy it straight away. It starts with
ftth_mcp_and is shown only once: we keep a hash of it, not the token, so we cannot show it again.
You can have up to 10 active tokens. Lost one? Revoke it and make another.
Connect your tool
The server address is https://www.fantasytabletophelper.com/api/mcp. Keep the www. part. Without it the address redirects, your tool drops the token on the redirect, and a good token comes back as invalid.
Claude Desktop
Open Settings, then Developer, then Edit Config. Add this to claude_desktop_config.json, with your token in place of ftth_mcp_YOUR_TOKEN, and restart Claude Desktop.
{
"mcpServers": {
"ftthelper": {
"url": "https://www.fantasytabletophelper.com/api/mcp",
"headers": { "Authorization": "Bearer ftth_mcp_YOUR_TOKEN" }
}
}
}Cursor
Put the same block in .cursor/mcp.json in your project, or in ~/.cursor/mcp.json for every project, and restart Cursor.
Claude Code
Put this in .mcp.json in your project, or in ~/.claude.json. It reads the token from an environment variable called FTTHELPER_MCP_TOKEN, so the file is safe to commit. Set the variable, then restart Claude Code.
{
"mcpServers": {
"ftthelper": {
"type": "http",
"url": "https://www.fantasytabletophelper.com/api/mcp",
"headers": { "Authorization": "Bearer ${FTTHELPER_MCP_TOKEN}" }
}
}
}Codex
Add this to ~/.codex/config.toml and restart Codex.
[mcp_servers.ftthelper] url = "https://www.fantasytabletophelper.com/api/mcp" [mcp_servers.ftthelper.headers] Authorization = "Bearer ftth_mcp_YOUR_TOKEN"
Then ask it something like “list my campaigns, then find every religion in one of them”. Treat the token like a password: never commit a file that has it written in.
What it can read
Exactly what you can see in the app, because it reads your data as you. Party notes, yes. Notes shared with the DM, only if you are the DM or wrote them. Private notes, only your own. Codex entries waiting for review, only if you are the DM.
| Tool | What it returns |
|---|---|
list_campaigns | Your campaigns, and whether you are the DM or a player in each. |
get_campaign | One campaign’s details. |
list_sessions | A campaign’s sessions, most recent first. |
search_codex | Search a campaign’s codex: NPCs, places, items, lore, religions, cultures and groups. |
get_subject | One codex entry in full, with its links to other entries. |
get_session_notes | The notes from one session that you are allowed to read. |
get_session_recap | A session’s recap, plus the story hooks if you are the DM. |
list_session_events | The roll and combat log for one session. |
get_session_transcript | The latest finished transcript of a session. DM only, and never the audio. |
What it can write
Everything it writes is recorded as written by you. Nothing it does becomes part of the campaign’s canon until the DM approves it in the app.
| Tool | What it does |
|---|---|
append_session_note | Add a note to a session. The tool has to say who can read it. |
submit_session_recap | Save a recap. The whole campaign can read it. |
propose_subject | Propose a new codex entry. Players cannot see it until the DM approves it. |
propose_relationship | Propose a link between two existing entries, for the DM to confirm. |
append_session_event | Add a roll, hit, heal or similar event to the session log. |
Revoking a token
Press Revoke next to it on AI tool access. It stops working on the tool’s next request. Revoke any token you have pasted somewhere you no longer control.
Limits and errors
Each token can make about 60 requests a minute.
| Error | What it usually means |
|---|---|
| 401 | The token is wrong or revoked, or the address is missing its www. Check the address first. |
| 403 | The account is not on a plan that includes AI tool access. |
| 404 | The server is switched off for now. |
| 405 | Your tool sent a GET. This server only accepts POST. |
| 429 | Too many requests. Wait for the time in the Retry-After header. |
| 503 | We could not open a session for your account. Try again. |
An empty list is usually a real answer: no campaigns yet, or nothing matched. For anything else, email info@r21digital.com.