MCP server
Let Claude, ChatGPT, Claude Code, Cursor or any MCP client read and update your boards, with the same permissions as the member whose key it uses.
What it is
The TallyWeek MCP server speaks MCP Streamable HTTP, stateless, with JSON responses. It exposes the workspace as tools (get_workspace, create_board, create_column, reorder_columns, create_item, update_item, post_update, set_board_member and more) plus search and fetch, so an assistant can find a board, add items, change statuses or post an update in plain language.
| URL | Auth |
|---|---|
https://tallyweek.com/api/mcp | Authorization: Bearer jk_… or the keyed form https://tallyweek.com/api/mcp/<key> |
Get a key
Create a key in Workspace home, API & MCP. Keys are available on the Pro plan and need the Change workspace settings permission to create. Choose the member the key acts as and the scopes it carries; Permissions and sharing explains how the two combine. A Read-only preset is a good first key for an assistant that only needs to answer questions.
Connect an assistant
- Claude (claude.ai / desktop): Settings, Connectors, Add custom connector, URL
https://tallyweek.com/api/mcp/<key>, no authentication. - ChatGPT: Settings, Connectors (Developer mode), Create, URL
https://tallyweek.com/api/mcp/<key>, No authentication. - Claude Code:
claude mcp add --transport http tallyweek https://tallyweek.com/api/mcp \ --header "Authorization: Bearer jk_…" - Cursor / generic:
{"mcpServers":{"tallyweek":{"url":"https://tallyweek.com/api/mcp","headers":{"Authorization":"Bearer jk_…"}}}}
The keyed URL form is for connectors that cannot send headers. Treat it like a password.Anyone who has the URL has the key. Prefer the header form wherever the client supports it, and revoke the key from the API & MCP tab if a URL leaks; it stops working immediately.
Tool families
| Family | Tools |
|---|---|
| Identity and workspace | get_me, get_workspace, list_members, search, fetch |
| Folders | list_folders, create_folder, update_folder, delete_folder |
| Boards | list_boards, get_board, create_board, update_board, archive_board, delete_board |
| Groups | create_group, update_group, reorder_groups, delete_group |
| Columns | list_columns, create_column, update_column, delete_column, reorder_columns, set_native_column_hidden |
| Items | list_items, get_item, create_item, create_subitem, update_item, move_item, delete_item, set_assignees |
| Updates and activity | list_updates, post_update, list_activity |
| Sharing | list_board_members, set_board_member, remove_board_member, invite_member |
A good first prompt is "call get_me and get_workspace and tell me what boards I have": the assistant learns the ids it needs for everything else. Boards accept a UUID or the numeric short id from the board URL. Custom column values are keyed by column id or name, as returned by get_board.
What the assistant can and cannot do
- Every action is authorised as the member the key acts as, then clamped by the key's scopes. An assistant with a read-only key cannot change anything, whatever it is asked.
- Private boards the member cannot open are invisible to the assistant.
- Writes behave like writes in the app: activity is logged as the acting member, open boards update in real time and automations run. In-app notifications are sent; email notifications are not.
Related
- REST API: the same operations over plain HTTP for your own scripts.
- Boards and columns: the value shapes an assistant should send for each column type.
- API and MCP overview: a shorter introduction.
Start a free workspace for your team.
14 days of Pro with no card, then Free for up to 3 members with every view and every automation.