fizzy-mcp
fizzy-mcp
MCP server for Fizzy task management. Exposes 7 tools for managing boards, cards, comments, and checklists.
Prerequisites
Get your Fizzy access token:
Log in to Fizzy
Go to Settings > API Access
Generate a new token
Related MCP server: Fizzy Do MCP
How to Install
Add to your config file:
macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"Fizzy": {
"command": "npx",
"args": ["-y", "@silky/fizzy-mcp"],
"env": {
"FIZZY_TOKEN": "your-token-here"
}
}
}
}Windows only: Add "APPDATA": "C:\\Users\\YourUsername\\AppData\\Roaming" to the env block.
Restart Claude Desktop completely, then verify: "List my Fizzy boards."
Use the CLI:
claude mcp add --transport stdio Fizzy --env FIZZY_TOKEN=your-token-here -- npx -y @silky/fizzy-mcpOr add to ~/.claude.json:
{
"mcpServers": {
"Fizzy": {
"command": "npx",
"args": ["-y", "@silky/fizzy-mcp"],
"env": {
"FIZZY_TOKEN": "your-token-here"
}
}
}
}Restart Claude Code, then verify: "List my Fizzy boards."
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"Fizzy": {
"command": "npx",
"args": ["-y", "@silky/fizzy-mcp"],
"env": {
"FIZZY_TOKEN": "your-token-here"
}
}
}
}Restart Cursor completely, then verify in Agent mode (Ctrl+I).
Add to .vscode/mcp.json in your workspace:
{
"inputs": [
{
"type": "promptString",
"id": "fizzy-token",
"description": "Fizzy API Token",
"password": true
}
],
"servers": {
"Fizzy": {
"command": "npx",
"args": ["-y", "@silky/fizzy-mcp"],
"env": {
"FIZZY_TOKEN": "${input:fizzy-token}"
}
}
}
}Or use user settings via Command Palette → "MCP: Open User Configuration".
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"Fizzy": {
"command": "npx",
"args": ["-y", "@silky/fizzy-mcp"],
"env": {
"FIZZY_TOKEN": "${env:FIZZY_TOKEN}"
}
}
}
}Set FIZZY_TOKEN in your shell environment, or hardcode the value. Restart Windsurf.
Add to the Cline MCP settings file:
macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonWindows:
%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonLinux:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
{
"mcpServers": {
"Fizzy": {
"command": "npx",
"args": ["-y", "@silky/fizzy-mcp"],
"env": {
"FIZZY_TOKEN": "your-token-here"
},
"disabled": false,
"alwaysAllow": []
}
}
}Add to .continue/config.yaml:
mcpServers:
- name: Fizzy
command: npx
args:
- "-y"
- "@silky/fizzy-mcp"
env:
FIZZY_TOKEN: ${{ secrets.FIZZY_TOKEN }}Requires pnpm.
git clone https://github.com/davegomez/fizzy-mcp.git
cd fizzy-mcp
pnpm install
pnpm buildReplace npx -y @silky/fizzy-mcp with node /absolute/path/to/fizzy-mcp/dist/index.js in any config above.
Configuration Reference
Variable | Required | Default | Description |
| Yes | — | API token from Fizzy settings |
| No | — | Default account slug (e.g., |
| No |
| API base URL |
Account Resolution
Tools resolve account_slug in this order:
Explicit
account_slugparameter on the tool callSession default (set via
fizzy_accounttool withaction: "set")FIZZY_ACCOUNTenvironment variableAuto-detect (if user has exactly one account)
Tools Reference
fizzy_account
Gets, sets, or lists accounts for subsequent tool calls.
Parameter | Type | Required | Description |
|
| Yes | Action to perform |
| string | For | Account slug from Fizzy URL |
Returns:
get:{ "action": "get", "account_slug": "897362094" | null }set:{ "action": "set", "account_slug": "897362094" }list:{ "action": "list", "accounts": [{ "slug": "...", "name": "...", "id": "..." }] }
fizzy_boards
Lists boards in the account with column summaries.
Parameter | Type | Required | Default | Description |
| string | No | Session default | Account slug |
| number | No | 25 | Items per page (1-100) |
| string | No | — | Pagination cursor |
Returns: { "items": Board[], "pagination": { "returned": number, "has_more": boolean, "next_cursor"?: string } }
fizzy_search
Searches for cards with filters.
Parameter | Type | Required | Description |
| string | No | Account slug |
| string | No | Filter by board |
| string[] | No | Filter by ALL tags |
| string[] | No | Filter by ANY assignees |
| string[] | No | Filter by card creator |
| string[] | No | Filter by who closed |
| string[] | No | Filter to specific card IDs |
|
| No | Filter by index |
|
| No | Filter by assignment status |
|
| No | Sort order |
| string[] | No | Free-text search terms |
| date range* | No | Filter by creation date |
| date range* | No | Filter by closure date |
| number | No | Items per page (1-100, default 25) |
| string | No | Pagination cursor |
*Date range values: today, yesterday, thisweek, thismonth, last7, last14, last30.
Returns: { "items": Card[], "pagination": {...} }
fizzy_get_card
Gets full details of a card by number or ID.
Parameter | Type | Required | Description |
| string | No | Account slug |
| number | No* | Card number from URL (e.g., |
| string | No* | Card UUID from API responses |
*Provide card_number OR card_id. Prefer card_number when you have the human-readable # from the UI.
Returns: Card object with id, number, title, description (markdown), status, board_id, column_id, tags, assignees, steps_count, completed_steps_count, comments_count, url, timestamps.
fizzy_task
Creates or updates a card.
Mode: Omit card_number to create; include it to update.
Parameter | Type | Required | Description |
| string | No | Account slug |
| number | No | Card to update (omit to create) |
| string | Create mode | Board for new card |
| string | Create mode | Card title |
| string | No | Markdown content |
|
| No | Change card status |
| string | No | Triage to column |
|
| No | Position in column (default: |
| string[] | No | Tag titles to add |
| string[] | No | Tag titles to remove |
| string[] | No | Checklist items (create mode only) |
Returns: { "mode": "create" | "update", "card": {...}, "operations": {...}, "failures": [...] }
fizzy_comment
Create, list, update, or delete a comment on a card.
Parameter | Type | Required | Description |
| string | No |
|
| string | No | Account slug |
| number | Yes | Card number |
| string | No | Comment ID. Required for update/delete |
| string | No | Comment in markdown (1-10000 chars). Required for create/update |
Returns: Comment object with id, body (markdown), creator, timestamps, url. List returns { comments, pagination }. Delete returns { comment_id, deleted }.
fizzy_step
Create, complete, update, uncomplete, or delete a step on a card.
Parameter | Type | Required | Description |
| string | No | Account slug |
| number | Yes | Card containing the step |
| string | number | No | Content substring OR 1-based index. Omit to create. |
| string | No | Step text for create or update |
| boolean | No | Set completion state |
| boolean | No | Delete the step |
Mode detection:
stepabsent → CREATE (requirescontent)steppresent, no other params → COMPLETEstep+content→ UPDATEstep+completed: false→ UNCOMPLETEstep+delete: true→ DELETE
Returns: { "id": "...", "content": "...", "completed": true }
Pagination Reference
List operations return:
{
"items": [...],
"pagination": {
"returned": 25,
"has_more": true,
"next_cursor": "opaque-cursor-string"
}
}Field | Type | Description |
| number | Items in this response |
| boolean | More items available |
| string | Pass as |
Error Reference
Error | Cause |
"No account specified. Set FIZZY_ACCOUNT env var, use fizzy_account tool, or pass account_slug." | No account resolvable via any method |
"Account "..." not found" | Invalid slug passed to |
"Card #N not found" | Card number does not exist |
"Board not found" | Invalid |
License
AGPL-3.0-or-later
Available Tools
7 toolsfizzy_accountA
Get, set, or list accounts for API calls.
Manages the session default so you don't need to pass account_slug on every tool call.
When to use:
List available accounts to see what you have access to
Set working account after discovering accounts
Check current default before operations
Don't use when: Operating across multiple accounts simultaneously — pass account_slug explicitly instead.
Arguments:
action(required): "get" to check current default, "set" to change it, "list" to see available accountsaccount_slug(required for set): Account slug (e.g., "897362094")
Returns:
get:
{ "action": "get", "account_slug": "897362094" }ornullif not setset:
{ "action": "set", "account_slug": "897362094" }list:
{ "action": "list", "accounts": [{ "slug": "...", "name": "...", "id": "..." }] }
Related: Most tools auto-resolve account via FIZZY_ACCOUNT env var or single-account auto-detection.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: get | set | list. Use 'get' to check current, 'set' to change, 'list' to see available. | |
| account_slug | No | Account slug (required for set action). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully explains behavior: it describes each action's return format and side effects (setting the default). It reveals that get returns null if unset and that account_slug is only needed for set. Missing details like error handling for invalid slugs prevent a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (When to use, Arguments, Returns, Related). While slightly verbose, every sentence adds useful information. It could be more terse, but the clarity compensates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers usage, behavior for all three actions, return formats, and related tools. It is comprehensive for a simple account management tool. Minor omission: no mention of error behavior for invalid slugs, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the enum for action and provides descriptions. The description adds value by clarifying the conditional requirement of account_slug (required for set) and giving an example slug, going beyond the schema's 'required': ['action'] alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get, set, or list accounts for API calls' and explains it manages the session default. It distinguishes itself from sibling tools like fizzy_boards or fizzy_task by focusing solely on account context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' and 'Don't use' sections provide explicit guidance for when to use this tool (list, set, check) and when to avoid it (multi-account operations, suggesting explicit account_slug instead). It also references auto-resolution via env var, giving clear context for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fizzy_boardsA
List boards in the account with column summaries.
Get an overview of boards and their column structure including card counts.
When to use:
Discover board IDs and column IDs for subsequent operations
See card counts per column across all boards
Find the right board/column to create cards or triage
Fizzy column conventions: Every board has three implicit columns not returned in the columns array:
Maybe? (inbox): Untriaged cards. Cards here have no
column_id. New cards start here.Not Now: Deferred cards. Move here via
status: "not_now"infizzy_task.Done: Closed cards. Move here via
status: "closed"infizzy_task.
The columns array only contains custom workflow columns (e.g., "In Progress", "Backlog").
To move a card from a column back to Maybe?, use fizzy_task with column_id omitted and no status change.
Arguments:
account_slug(optional): Uses session default if omittedlimit(optional): Max items to return, 1-100 (default: 25)cursor(optional): Continuation cursor from previous response
Returns: JSON with items and pagination metadata.
{"items": [{"id": "board_1", "name": "Project", "columns": [{"id": "col_1", "name": "Backlog"}]}], "pagination": {...}}Related: Use board ID with fizzy_task to create cards. Use column IDs for triage.
| Name | Required | Description | Default |
|---|---|---|---|
| account_slug | No | Account slug. Uses session default if omitted. | |
| limit | Yes | Max items to return (1-100, default: 25). | |
| cursor | No | Continuation cursor from previous response. Omit to start fresh. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses behavior beyond a simple list: explains implicit column conventions (Maybe?, Not Now, Done) and how columns array works. This is valuable for correct usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections: purpose, when to use, conventions, arguments, return format, related tools. Every sentence is meaningful and front-loaded with main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides an example return JSON and explains pagination. The implicit column rule is critical for downstream operations, and the 'Related' section ties to sibling tools. Complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, but description adds significant meaning: explains account_slug default behavior, limit default range, cursor pagination usage, and column array contents. These details compensate fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'List boards in the account with column summaries.' It distinguishes from sibling tools like fizzy_task (create cards) and fizzy_search by focusing on board listing and column discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' section explicitly states purposes: discover board IDs/column IDs, see card counts, find right board/column. It also relates to siblings via 'Related' line. Missing explicit 'when not to use', but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fizzy_commentA
Manage comments on a card: create, list, update, or delete.
Actions:
create(default): Post a new commentlist: Get all comments on a cardupdate: Edit an existing comment (requirescomment_id+body)delete: Remove a comment (requirescomment_id)
Arguments:
action(optional): "create" | "list" | "update" | "delete" (default: "create")account_slug(optional): Uses session default if omittedcard_number(required): Card numbercomment_id(optional): Required for update/deletebody(optional): Comment body in markdown. Required for create/update
Returns: JSON with comment details, list of comments, or deletion confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform. | create |
| account_slug | No | Account slug. Uses default if omitted. | |
| card_number | Yes | Card number. | |
| comment_id | No | Comment ID. Required for update/delete. | |
| body | No | Comment body in markdown (1-10000 chars). Required for create/update. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses all four actions and their effects, including deletion which is destructive. Without annotations, the description carries the full burden and covers behavior well. It doesn't mention auth needs or rate limits, but returns are described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for actions and arguments, using markdown for readability. It conveys necessary info without extraneous text, though slightly verbose. Still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions return types (comment details, list, confirmation), completing the picture. It covers all actions and parameter requirements. Could specify exact JSON fields, but sufficient for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by grouping parameters by action and clarifying defaults (e.g., 'Uses session default if omitted' for account_slug). It also specifies markdown format for body, complementing the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages comments on a card with four actions (create, list, update, delete). The tool name 'fizzy_comment' and its relation to other Fizzy tools (account, boards, etc.) is distinct, providing a specific verb+resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when each action is used and required arguments. While it doesn't contrast with sibling tools, the siblings have different purposes (account, boards, search), so the context is clear. It could mention not to use this tool for other card operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fizzy_get_cardA
Get full details of a card by its number or ID. Retrieve complete card data including description, steps count, and metadata.
When to use:
Need full description or metadata for a specific card
Check step completion status or see all tags/assignees
Don't use when: Scanning multiple cards - use fizzy_search first.
Arguments:
account_slug(optional): Uses session default if omittedcard_number(recommended): The human-readable#number from URLs/lists (e.g., 42)card_id(alternative): The UUID from API responses. Usecard_numberwhen possible.
IMPORTANT: Provide card_number (integer) OR card_id (string UUID), not both.
The card_number is the # visible in the UI (e.g., #42). The card_id is the internal UUID.
Returns:
JSON with id, number, title, description (markdown), status, board_id, column_id, tags array, assignees array, steps_count, completed_steps_count, comments_count, url, created_at, updated_at, closed_at (null if open).
Example: {"id": "card_abc", "number": 42, "title": "Fix bug", "status": "open", "steps_count": 3, ...}
Related: Use fizzy_comment or fizzy_step for deeper interaction.
| Name | Required | Description | Default |
|---|---|---|---|
| account_slug | No | Account slug (e.g., 'acme-corp'). Uses session default if omitted. | |
| card_number | No | Card number - the human-readable # from URLs/UI (e.g., 42). Preferred over card_id. | |
| card_id | No | Card UUID from API responses. Use card_number instead when you have the # visible in the UI. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains what the tool returns in detail (JSON fields with examples) and clarifies the two identification methods. It implies a read-only operation but does not explicitly state that. Given no annotations, the description carries the burden adequately, though it could explicitly mention read-only behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, when to use, arguments, important notes, and return format. It is concise with no redundant information, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects: purpose, input parameters with guidance, output format with example, and related tools. For a simple get tool, this is complete and leaves no ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value: explains the meaning of card_number (UI #) vs card_id (API UUID), provides preferred usage, and includes example values. This greatly enhances usability beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full details of a card by its number or ID.' It distinguishes the tool from sibling search tool by specifying it retrieves complete card data for a single card, and mentions related tools for deeper interaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (need full description/metadata) and when not to use (scanning multiple cards - use fizzy_search). Provides clear context for usage and references alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fizzy_searchA
Search for cards with filters. Find cards matching criteria or review board contents.
When to use:
Find cards by tag, assignee, or board
Filter by index category (closed, stalled, golden, etc.)
Don't use when: You already know the card number — use fizzy_get_card instead.
Arguments:
account_slug(optional): Uses session default if omittedboard_id(optional): Filter to cards on this boardindexed_by(optional): Filter by index category: closed | not_now | all | stalled | postponing_soon | goldentag_ids(optional): Filter to cards with ALL these tag IDsassignee_ids(optional): Filter to cards assigned to ANY of these user IDssorted_by(optional): Sort order: newest | oldest | recently_activeterms(optional): Search terms to filter cards by text contentlimit(optional): Max items, 1-100 (default: 25)cursor(optional): Continuation cursor from previous response
Returns: JSON with items and pagination metadata.
{"items": [{"number": 42, "title": "...", ...}], "pagination": {"returned": 25, "has_more": true, "next_cursor": "..."}}Related: Use card number with fizzy_get_card for full details.
| Name | Required | Description | Default |
|---|---|---|---|
| account_slug | No | Account slug (e.g., 'acme-corp'). Uses session default if omitted. | |
| board_id | No | Filter to cards on this board ID. | |
| indexed_by | No | Filter by index category: closed | not_now | all | stalled | postponing_soon | golden. | |
| tag_ids | No | Filter to cards with ALL these tag IDs. | |
| assignee_ids | No | Filter to cards assigned to ANY of these user IDs. | |
| sorted_by | No | Sort order: newest | oldest | recently_active. | |
| terms | No | Search terms to filter cards by text content. | |
| creator_ids | No | Filter to cards created by these user IDs. | |
| closer_ids | No | Filter to cards closed by these user IDs. | |
| card_ids | No | Filter to specific card IDs. | |
| assignment_status | No | Filter by assignment status: unassigned. | |
| creation | No | Filter by creation date range: today | yesterday | thisweek | thismonth | last7 | last14 | last30. | |
| closure | No | Filter by closure date range: today | yesterday | thisweek | thismonth | last7 | last14 | last30. | |
| limit | Yes | Max items to return (1-100, default: 25). | |
| cursor | No | Continuation cursor from previous response. Omit to start fresh. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description covers functionality and return format, but doesn't explicitly state read-only nature or any side effects. Adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, front-loaded main purpose, efficient bullet points for arguments, no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 15 parameters, no output schema, and no annotations, description covers all parameters, return format, pagination, and related tools. Could mention error handling but sufficient for usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value with structured argument list, defaults, and pagination details, providing moderate extra context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it searches for cards with filters, lists specific use cases (tag, assignee, board, index category), and distinguishes from sibling tool fizzy_get_card for when card number is known.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'Don't use when' sections, with clear guidance on alternatives (fizzy_get_card). Provides context for filter usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fizzy_stepA
Create, complete, update, uncomplete, or delete a step on a card.
Mode detection:
stepabsent → CREATE (requirescontent)steppresent, no other params → COMPLETE (default action)step+content→ UPDATE contentstep+completed: false→ UNCOMPLETEstep+delete: true→ DELETE
Arguments:
account_slug(optional): Uses session default if omittedcard_number(required): Card number containing the stepstep(optional): Content substring to match OR 1-based index to identify existing stepcontent(optional): Step text for create or updatecompleted(optional): Set completion state (true or false)delete(optional): Delete the step
Returns: JSON with step id, content, completed status.
Examples:
Create:
{card_number: 42, content: "Write tests"}Complete:
{card_number: 42, step: "Write tests"}Uncomplete:
{card_number: 42, step: 1, completed: false}Update:
{card_number: 42, step: 1, content: "Write unit tests"}Delete:
{card_number: 42, step: "Write tests", delete: true}
| Name | Required | Description | Default |
|---|---|---|---|
| account_slug | No | Account slug. Uses default if omitted. | |
| card_number | Yes | Card number containing the step. | |
| step | No | Step to act on: content substring or 1-based index. Omit to create. | |
| content | No | Step text for create or update. | |
| completed | No | Set completion state. | |
| delete | No | Delete the step. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: it explains modes, parameter interactions, optionality, and return format. There are no contradictions, and the agent understands side effects (e.g., deletion is described).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings and bullet points, front-loading the purpose. It is somewhat lengthy due to comprehensive coverage, but every sentence adds value; minor trimming could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (1 required), no output schema, and no annotations, the description is thorough: it covers all modes, parameter semantics, and return values. An agent can use this tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds substantial value beyond the schema by explaining the mode detection logic, how 'step' can be a substring or index, and how parameters combine. This aids correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create, complete, update, uncomplete, or delete a step on a card.' It uses specific verbs and a resource (step on a card), and the sibling tool names (e.g., fizzy_boards, fizzy_get_card) confirm it is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit mode detection logic and examples for each action, guiding when to use which parameters. It does not explicitly contrast with siblings, but the sibling names and context make the tool's domain clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fizzy_taskA
Create or update a card with full control over status, tags, steps, and column placement.
Mode detection:
card_numberabsent → CREATE mode (requiresboard_id+title)card_numberpresent → UPDATE mode
Create mode: Creates card, then best-effort: adds steps, toggles tags, triages to column.
Update mode: Updates title/description if provided. Changes status (open/closed/not_now). Manages tags with add/remove. Moves card to column (from inbox or another column). Same-column moves are skipped.
Fizzy column conventions:
Maybe? (inbox): Cards with no
column_id. This is where new cards start.Not Now: Set
status: "not_now"to move here (defers the card).Done: Set
status: "closed"to move here (completes the card).Custom columns: Use
column_idfromfizzy_boardsto triage to workflow columns.
Arguments:
account_slug(optional): Uses session default if omittedcard_number(optional): Card to update. Omit to create new card.board_id(optional): Board ID. Required for create mode.title(optional): Card title. Required for create mode.description(optional): Card body in markdownstatus(optional): open | closed | not_now — changes card lifecycle statecolumn_id(optional): Move card to this column (works from inbox or other columns; skipped if already there)position(optional): top | bottom (default: bottom) — position in columnadd_tags(optional): Tag titles to addremove_tags(optional): Tag titles to removesteps(optional): Checklist items to create (create mode only)
Returns:
JSON with mode, card (id, number, title, url, status), operations summary, failures array.
Examples:
Create: {board_id: "...", title: "New task", steps: ["Step 1", "Step 2"]}
Update: {card_number: 42, status: "closed", add_tags: ["done"]}
| Name | Required | Description | Default |
|---|---|---|---|
| account_slug | No | Account slug. Uses session default if omitted. | |
| card_number | No | Card number to update. Omit to create a new card. | |
| board_id | No | Board ID. Required when creating a new card. | |
| title | No | Card title (1-500 chars). Required when creating. | |
| description | No | Card body in markdown (max 10000 chars). | |
| status | No | Card status: open | closed | not_now. | |
| column_id | No | Column ID to triage card to. | |
| position | Yes | Position in column: top | bottom (default: bottom). | bottom |
| add_tags | No | Tag titles to add to the card. | |
| remove_tags | No | Tag titles to remove from the card. | |
| steps | No | Checklist steps to create (create mode only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Details mode detection, best-effort operations, update behavior (skip same-column moves), and column conventions. Lacks error handling or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headers, bullet arguments, and examples. Every sentence adds value; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: mode detection, creation/update specifics, column conventions, parameter meanings, return format, and examples. Complete for a moderately complex tool with no annotations or output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds value by grouping parameters (e.g., create-mode required, update-mode optional), explaining enum meanings (open/closed/not_now), and clarifying steps is create-mode only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates or updates a card with full control, and distinguishes from siblings like fizzy_get_card (read-only) and fizzy_comment (commenting).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit mode detection and required parameters for create vs update, but does not explicitly state when to use alternative tools like fizzy_get_card or fizzy_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with minimal overlap. For example, fizzy_get_card retrieves a single card's details, fizzy_search finds multiple cards with filters, and fizzy_task creates/updates cards, while fizzy_step and fizzy_comment manage sub-resources. The descriptions clearly differentiate when to use each tool, preventing misselection.
All tool names follow a consistent 'fizzy_' prefix with descriptive noun suffixes (e.g., account, boards, comment, get_card, search, step, task). This uniform snake_case pattern makes the tool set predictable and easy to understand, with no deviations in naming conventions.
With 7 tools, the set is well-scoped for a task/project management domain. It covers core operations like account management, board listing, card retrieval, search, creation/updates, and sub-resource handling (steps, comments), which is appropriate without being overly sparse or bloated.
The tool set provides comprehensive coverage for managing tasks in Fizzy, including CRUD operations for cards (via fizzy_task and fizzy_get_card), searching (fizzy_search), board exploration (fizzy_boards), and handling steps and comments. It also includes account management (fizzy_account), ensuring no obvious gaps for typical workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Collaborative whiteboard MCP server — create objects, connectors, C4 diagrams, and manage boards
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
The official Planning Center MCP server for interacting with your ministry's data.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for Fizzy (Kanban tool by 37signals) that enables AI assistants to read and manage boards, cards, columns, tags, comments, and more.1MIT
- AlicenseNot gradedqualityCmaintenanceOpen-source MCP server that connects AI assistants to Fizzy (Basecamp's task management) with 70+ tools for boards, cards, workflows, and AI-powered project management.233MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to manage tasks, boards, lists, and comments on a Kanban-style project management system through JSON-RPC methods.92AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceMCP server for interacting with Kaiten project management through its REST API. Enables managing spaces, boards, cards, comments, checklists, tags, and time logs.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/davegomez/fizzy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server