Mochi MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mochi MCP Serversearch for cards about machine learning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mochi MCP Server
A Model Context Protocol server that enables AI agents (Claude, Codex, etc.) to manage your Mochi.cards flashcards.
Features
Browse decks and cards
Search cards by content or tags
Create/Update cards with two-phase commit (preview before applying)
Delete cards with typed confirmation (safety first)
Robust safety - deck deletion disabled by default
Related MCP server: Mochi MCP Server
Quick Start
# Install
npm install
# Build
npm run build
# Run (needs your Mochi API key)
MOCHI_API_KEY=your_key_here node dist/index.jsGet your API key from the Mochi app: Settings → Account → API Key.
Usage with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"mochi": {
"command": "node",
"args": ["/path/to/mochi-mcp/dist/index.js"],
"env": {
"MOCHI_API_KEY": "your_api_key"
}
}
}
}Then ask Claude: "List my Mochi decks" or "Search for cards about gradients".
Tools
Read Operations
Tool | Description |
| List all decks |
| Get deck with card list |
| Get full card content |
| Get multiple cards by ID |
| Search by text, tags, or date. Returns rich results (deckId, createdAt, etc.) |
| Paginated card listing with bookmark |
| Find decks by name (case-insensitive partial match) |
Write Operations (Two-Phase Commit)
Tool | Description |
| Preview new card → returns token |
| Apply creation with token |
| Preview edit with diff → returns token |
| Preview Q/A edit → returns token |
| Apply update with token |
| Preview batch updates |
| Apply batch updates |
Tag Operations (Two-Phase)
Tool | Description |
| Preview adding tags to cards |
| Preview removing tags |
| Apply tag changes with token |
Delete Operations (Requires Confirmation)
Tool | Description |
| Soft-delete (requires: "delete card <id>") |
| Disabled by default |
Performance Notes
Global search scans at most 1000 cards
Per-deck search scans at most 5000 cards
Use
list_cards_pagewith pagination for larger collectionsDate filters use UTC (ISO 8601 format:
YYYY-MM-DDTHH:mm:ss.sssZ)
Configuration
Variable | Required | Default | Description |
| ✅ | - | Your Mochi API key |
| ❌ |
| Enable deck deletion |
| ❌ |
| Preview token validity |
Safety Design
Two-phase commit: Create/update operations show a preview first. You approve by using the returned token.
Typed confirmations: Delete requires typing
"delete card <id>"exactly.Deck deletion disabled: Must set
MOCHI_ALLOW_DECK_DELETE=trueto enable.Soft delete default: Cards go to trash (recoverable in Mochi app).
Development
# Run tests
npm test
# Type check
npm run lint
# Development mode
MOCHI_API_KEY=your_key npm run dev
# Test with MCP Inspector
npm run inspectLicense
MIT
Available Tools
20 toolsadd_tags_previewA
Preview adding tags to one or more cards. Returns a token for apply_tags_update.
| Name | Required | Description | Default |
|---|---|---|---|
| cardIds | Yes | Card IDs to add tags to | |
| tagsToAdd | Yes | Tags to add |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks critical behavioral details. It mentions the preview nature and token output, but doesn't disclose whether this requires permissions, if it's idempotent, rate limits, or error conditions. For a mutation-related tool, this is a significant gap in transparency.
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 a single, efficient sentence that front-loads the purpose and includes essential output information. Every word earns its place with zero wasted text, making it highly concise and well-structured.
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 annotations and no output schema, the description provides basic purpose and output token information but lacks details on behavioral traits, error handling, or what the token represents. For a preview tool that likely involves validation, this is adequate but leaves clear gaps in completeness.
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 description coverage is 100%, so the schema already fully documents both parameters ('cardIds' and 'tagsToAdd'). The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score for high coverage.
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 specific action ('Preview adding tags'), the target resource ('to one or more cards'), and distinguishes it from siblings by mentioning the output token for 'apply_tags_update'. It uses precise verbs and resources, avoiding tautology.
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 implies usage context by specifying it's a preview operation that returns a token for 'apply_tags_update', suggesting it should be used before applying changes. However, it doesn't explicitly state when not to use it or name alternatives like 'remove_tags_preview' for removal scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_create_cardB
Execute card creation after user confirms
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token from create_card_preview | |
| confirmation | Yes | User must type exactly: "confirm create" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'Execute card creation', implying a write operation, but doesn't disclose behavioral traits such as permissions needed, whether it's idempotent, error handling, or what happens on success/failure. This is a significant gap for a tool that likely modifies data.
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 a single, efficient sentence that is front-loaded with the main action ('Execute card creation') and includes essential context ('after user confirms'). There is no wasted verbiage, making it easy for an agent to parse quickly.
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 the complexity of a card creation tool with no annotations and no output schema, the description is insufficient. It lacks details on what the tool returns, error conditions, or how it fits into the broader workflow with siblings like 'create_card_preview'. This leaves the agent with incomplete information for reliable invocation.
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 description coverage is 100%, so the schema already documents both parameters ('token' and 'confirmation') with clear descriptions. The description adds no additional meaning beyond what's in the schema, such as explaining the relationship between 'token' and 'create_card_preview' or the purpose of the confirmation step. Baseline 3 is appropriate when the schema does the heavy lifting.
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 action ('Execute card creation') and the condition ('after user confirms'), which is specific and actionable. However, it doesn't distinguish this tool from sibling tools like 'create_card_preview' or 'create_deck', leaving some ambiguity about its unique role in the workflow.
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 implies usage context ('after user confirms'), suggesting this is a follow-up step, but it doesn't explicitly state when to use this tool versus alternatives like 'create_card_preview' or 'create_deck'. No exclusions or prerequisites are mentioned, leaving the agent to infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_tags_updateA
Apply tag changes after user confirms. Use with token from add_tags_preview or remove_tags_preview.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token from add_tags_preview or remove_tags_preview | |
| confirmation | Yes | Must be exactly: "confirm tags" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that this tool applies changes after user confirmation, implying a mutation operation, but it doesn't disclose behavioral traits like whether it's idempotent, what happens on failure, or if it requires specific permissions. The description adds some context but lacks depth for a mutation tool.
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 two sentences, front-loaded with the main purpose, and every word earns its place. It efficiently conveys the tool's function and usage without any wasted 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?
Given no annotations and no output schema, the description is moderately complete. It covers the purpose and prerequisites but lacks details on behavioral aspects like error handling or return values. For a mutation tool with two parameters, it's adequate but has clear gaps in transparency.
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 description coverage is 100%, so the schema already documents both parameters fully. The description adds minimal value by referencing the token's source ('from add_tags_preview or remove_tags_preview'), but it doesn't provide additional semantics beyond what the schema states. This meets the baseline for high schema coverage.
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 action ('Apply tag changes') and the resource ('tags'), and it specifies the timing condition ('after user confirms'). However, it doesn't explicitly differentiate this tool from sibling tools like 'add_tags_preview' or 'remove_tags_preview' beyond mentioning their tokens as inputs.
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 guidance on when to use this tool: 'after user confirms' and 'Use with token from add_tags_preview or remove_tags_preview.' It clearly indicates the prerequisite tools and the confirmation step, making it easy to distinguish from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_update_cardC
Execute card update after user confirms
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token from update_card_preview | |
| confirmation | Yes | User must type exactly: "confirm update" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates this is a mutation tool ('Execute card update'), but lacks details on permissions, side effects, error handling, or response format. The phrase 'after user confirms' hints at a workflow step, but doesn't clarify if this is destructive, irreversible, or has rate limits, making behavioral traits insufficiently disclosed.
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 a single, efficient sentence with zero waste: 'Execute card update after user confirms'. It's front-loaded with the core action and includes a key constraint, making it appropriately sized and easy 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?
Given the complexity (a mutation tool with no annotations and no output schema), the description is incomplete. It lacks details on what 'card update' involves, the outcome, error conditions, or how it fits with siblings like 'update_card_preview'. Without annotations or output schema, more context is needed for effective agent use.
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 description coverage is 100%, with parameters 'token' and 'confirmation' fully documented in the schema. The description adds no additional meaning beyond implying a sequence ('after user confirms'), but doesn't explain parameter relationships or usage context. With high schema coverage, the baseline is 3, as the description doesn't compensate but also doesn't detract.
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 'Execute card update after user confirms' states the action (execute) and resource (card update), but is vague about what 'card update' entails compared to siblings like 'apply_update_cards_batch' or 'update_card_fields_preview'. It doesn't specify if this applies to a single card or batch, or what aspects of a card are updated, leaving ambiguity.
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 mentions 'after user confirms', implying a prerequisite (user confirmation), but provides no explicit guidance on when to use this tool versus alternatives like 'apply_update_cards_batch' or 'update_card_preview'. There's no mention of scenarios, exclusions, or comparisons to sibling tools, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_update_cards_batchC
Apply a batch of card updates.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token from update_cards_batch_preview | |
| confirmation | Yes | Must be exactly: "confirm batch update" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't indicate if this is a mutation (likely, given 'apply'), its effects (e.g., irreversible changes), permissions needed, error handling, or rate limits. This leaves critical gaps for a tool that appears to perform batch operations.
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 a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to scan. Every word earns its place, achieving optimal 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 the tool's complexity (batch updates, likely mutations) and lack of annotations or output schema, the description is incomplete. It doesn't cover what 'apply' entails, the batch's scope, success/failure behavior, or return values. For a tool with significant potential impact, this minimal description is inadequate.
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 input schema has 100% description coverage, detailing both parameters ('token' from preview and 'confirmation' string). The description adds no additional meaning beyond the schema, such as explaining the batch content or process. Baseline 3 is appropriate since the schema fully documents parameters.
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 'Apply a batch of card updates' clearly states the action (apply) and resource (batch of card updates), but it's vague about what 'apply' entails (e.g., commit, execute, process) and doesn't distinguish it from siblings like 'apply_update_card' (single card) or 'update_cards_batch_preview' (preview). It's adequate but lacks specificity.
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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a token from 'update_cards_batch_preview'), exclusions, or comparisons to siblings like 'apply_update_card' or 'update_cards_batch_preview'. The description alone offers no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_card_previewA
Preview a new card. IMPORTANT: After calling this, you MUST show the preview to the user and ask for explicit confirmation before calling apply_create_card. Do NOT chain these calls automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| deckId | Yes | Deck ID to create card in | |
| content | Yes | Markdown content for the card | |
| tags | No | Tags to add |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: this is a preview operation (not a final creation), it requires user confirmation before proceeding, and it has a specific workflow constraint (must not be chained automatically). However, it doesn't mention potential side effects like rate limits or authentication needs.
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 perfectly concise and well-structured: two sentences that front-load the core purpose ('Preview a new card') followed by critical workflow instructions. Every sentence earns its place by providing essential guidance without any wasted words.
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 the tool's complexity (preview operation with workflow constraints), no annotations, and no output schema, the description is mostly complete. It clearly explains the purpose, usage guidelines, and behavioral workflow. However, it doesn't describe what the preview output looks like or any error conditions, leaving some gaps in contextual understanding.
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 description coverage is 100%, so the schema already documents all three parameters (deckId, content, tags) with their descriptions. The description adds no additional parameter information beyond what's in the schema, maintaining the baseline score of 3 for adequate coverage through structured data 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 the tool's purpose with a specific verb ('preview') and resource ('new card'), distinguishing it from sibling tools like 'apply_create_card' (which applies the creation) and 'create_deck' (which creates a different resource). It explicitly defines the action as a preview rather than a final creation.
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 usage guidelines: it states when to use this tool (to preview a new card) and when not to (do NOT chain calls automatically), and specifies the required follow-up action (show preview to user and ask for confirmation before calling 'apply_create_card'). It clearly distinguishes this from its sibling 'apply_create_card'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_deckC
Create a new deck
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the deck | |
| parentId | No | Parent deck ID for nesting |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create a new deck' implies a write operation but doesn't specify permissions needed, whether it's idempotent, what happens on duplicate names, or what the response contains. For a mutation tool with zero annotation coverage, this leaves critical behavioral traits undocumented.
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 extremely concise at three words, with zero wasted language. It's front-loaded with the core action and resource. While under-specified, it's not verbose or poorly structured—every word earns its place by stating the essential function.
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 the complexity of a creation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what a 'deck' is, how it relates to other entities (like cards), what happens after creation, or error conditions. For a tool that likely modifies system state, this leaves too many contextual gaps for effective agent use.
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 description coverage is 100%, with both parameters ('name' and 'parentId') clearly documented in the schema. The description adds no parameter-specific information beyond what the schema provides. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 'Create a new deck' is a tautology that restates the tool name without adding meaningful context. It specifies the verb ('create') and resource ('deck'), but doesn't distinguish this from sibling tools like 'create_card_preview' or explain what a 'deck' represents in this system. The purpose is clear at a basic level but lacks differentiation from alternatives.
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 no guidance on when to use this tool versus alternatives. With sibling tools like 'create_card_preview', 'find_deck_by_name', and 'list_decks', there's no indication of when creation is appropriate versus searching or listing. No prerequisites, constraints, or comparative context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cardA
Delete a card (soft-delete by default). Requires typed confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | Card ID to delete | |
| confirmation | Yes | Must be exactly: "delete card <cardId>" | |
| permanent | No | Hard delete - cannot be undone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and adds valuable behavioral context: it discloses the default soft-delete behavior, the requirement for typed confirmation, and implies irreversibility for permanent deletion via the parameter description. However, it does not cover rate limits, authentication needs, or error conditions.
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 two concise sentences that are front-loaded with the core action and default behavior, followed by a key requirement. Every sentence earns its place with no wasted words.
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?
For a deletion tool with no annotations and no output schema, the description is reasonably complete: it covers the action, default behavior, and a key requirement. However, it lacks details on what 'soft-delete' entails (e.g., recovery options) and does not mention the response format or error handling.
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 description coverage is 100%, so the schema already documents all parameters. The description adds no additional parameter semantics beyond what the schema provides (e.g., it does not explain the format of 'cardId' or the implications of 'permanent'). Baseline 3 is appropriate when the schema does the heavy lifting.
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 verb ('Delete') and resource ('a card'), and specifies the default behavior ('soft-delete by default'). This distinguishes it from siblings like 'delete_deck' (different resource) and 'get_card' (different action).
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 implies usage when deleting a card, but does not explicitly state when to use this tool versus alternatives like 'delete_deck' or 'get_card' (for checking before deletion). It mentions a prerequisite ('Requires typed confirmation') but lacks explicit when-not-to-use guidance or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_deckA
Delete a deck (disabled by default, requires MOCHI_ALLOW_DECK_DELETE=true)
| Name | Required | Description | Default |
|---|---|---|---|
| deckId | Yes | Deck ID to delete | |
| confirmation | Yes | Must be exactly: "delete deck <deckName>" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses critical behavioral traits: it's a destructive operation (implied by 'Delete'), requires explicit environment configuration, and includes a confirmation parameter for safety. However, it doesn't detail error cases or irreversible consequences.
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 a single, front-loaded sentence with zero waste—every word adds value (action, resource, configuration requirement). It's appropriately sized for a simple destructive operation.
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?
For a destructive tool with no annotations or output schema, the description covers purpose and prerequisites but lacks details on outcomes (e.g., what happens to associated cards), error handling, or confirmation rationale. It's minimally adequate given the complexity.
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 description coverage is 100%, so the schema already documents both parameters fully. The description adds no additional parameter semantics beyond what the schema provides, meeting the baseline for high coverage.
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 action ('Delete') and resource ('a deck'), with specific differentiation from siblings like 'delete_card' by focusing on deck-level deletion. It's specific and unambiguous.
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 context for when to use it ('disabled by default, requires MOCHI_ALLOW_DECK_DELETE=true'), but doesn't mention alternatives like 'delete_card' or when not to use it (e.g., for batch operations).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_deck_by_nameA
Find decks by name (case-insensitive partial match). Useful when you know the deck name but not its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Name or partial name to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the search behavior ('case-insensitive partial match'), which is useful, but lacks details on permissions, rate limits, pagination, or return format. For a read operation with no annotations, this is adequate but not comprehensive.
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?
Two sentences with zero waste: the first states the purpose and behavior, the second provides usage guidance. It is front-loaded with essential information and appropriately sized for the tool's complexity.
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 annotations, no output schema, and a simple single-parameter input, the description covers purpose and usage well but lacks behavioral details like return format or error handling. It's complete enough for basic use but could be enhanced with more context on results.
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 description coverage is 100%, with the parameter 'query' documented as 'Name or partial name to search for'. The description adds context by reinforcing this as a search input but doesn't provide additional syntax or format details beyond what the schema already covers.
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 verb ('find') and resource ('decks by name'), specifies the matching behavior ('case-insensitive partial match'), and distinguishes it from sibling tools like 'list_decks' and 'get_deck' by focusing on name-based searching rather than listing all decks or retrieving by ID.
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?
It explicitly states when to use this tool ('when you know the deck name but not its ID'), providing clear context for selection over alternatives like 'get_deck' (which requires ID) or 'list_decks' (which lists all decks without filtering).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardB
Get full content of a single card
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | Card ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions retrieving 'full content' but doesn't specify whether this is a read-only operation, if it requires authentication, potential rate limits, or error handling. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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 a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to grasp immediately.
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 the tool's low complexity (single parameter, no output schema, no annotations), the description is minimally adequate. It explains what the tool does but lacks details on behavior, usage context, or output format, which would be needed for a more complete understanding in a server with many sibling tools.
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 input schema has 100% description coverage, with 'cardId' clearly documented as 'Card ID to retrieve'. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline score for high schema coverage without compensating value.
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 verb ('Get') and resource ('full content of a single card'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'get_cards' or 'search_cards', which might retrieve multiple cards or filtered results, so it doesn't reach the highest score.
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 no guidance on when to use this tool versus alternatives such as 'get_cards' (for multiple cards) or 'search_cards' (for filtered searches). It simply states what the tool does without context about its appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardsC
Get content of multiple cards (bulk)
| Name | Required | Description | Default |
|---|---|---|---|
| cardIds | Yes | List of Card IDs to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states what the tool does ('Get content'), but doesn't describe any behavioral traits like whether it's read-only, performance characteristics, error handling, or what happens with invalid IDs. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.
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 extremely concise at just 5 words, front-loading the essential information ('Get content of multiple cards') with a clarifying parenthetical ('bulk'). Every word earns its place with zero waste or 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?
For a read operation with no annotations and no output schema, the description is incomplete. It doesn't explain what 'content' includes, the format of returned data, pagination behavior, or error conditions. While the schema covers the single input parameter well, the overall context for using this tool effectively is insufficient.
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 description coverage is 100%, with the single parameter 'cardIds' well-documented in the schema as 'List of Card IDs to retrieve'. The description adds no additional parameter semantics beyond implying bulk operation through 'multiple cards', which aligns with the array parameter type. Baseline 3 is appropriate when the schema does the heavy lifting.
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 action ('Get') and resource ('content of multiple cards') with the qualifier 'bulk', making the purpose evident. It distinguishes from the sibling 'get_card' by specifying multiple cards, but doesn't explicitly differentiate from other list/search tools like 'list_cards_page' or 'search_cards' beyond the bulk retrieval aspect.
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?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention when to choose this bulk retrieval over individual 'get_card' calls, or when to prefer 'list_cards_page' or 'search_cards' for different retrieval needs. The agent must infer usage from the tool name and context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deckC
Get deck details and list of cards
| Name | Required | Description | Default |
|---|---|---|---|
| deckId | Yes | Deck ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves deck details and a card list, implying a read-only operation, but doesn't disclose critical traits like whether it's safe (non-destructive), what authentication is needed, rate limits, or the format of returned data. This is inadequate for a tool with zero annotation coverage.
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 extremely concise with a single sentence, 'Get deck details and list of cards', which is front-loaded and wastes no words. Every part of the sentence directly contributes to understanding the tool's purpose, making it efficiently structured.
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 the complexity of retrieving deck details and a card list, with no annotations and no output schema, the description is incomplete. It doesn't explain what 'deck details' include, how the card list is formatted, or any behavioral aspects like pagination or error handling. This leaves significant gaps for the agent to infer.
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 input schema has 100% description coverage, with the single parameter 'deckId' clearly documented in the schema. The description adds no additional meaning beyond what the schema provides, such as explaining the deck ID format or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.
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 verb 'Get' and the resource 'deck details and list of cards', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_card' (which retrieves a single card) or 'find_deck_by_name' (which finds decks by name rather than ID), missing full sibling differentiation.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer 'get_deck' over 'get_card' for card details or 'list_decks' for deck listings, nor does it specify prerequisites like needing a deck ID. This leaves the agent without contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cards_pageA
Fetch a single page of cards with explicit pagination. Use for iterating through large collections.
| Name | Required | Description | Default |
|---|---|---|---|
| deckId | No | Deck ID (optional - lists from all decks if omitted) | |
| bookmark | No | Pagination cursor from previous response | |
| pageSize | No | Cards per page (default 50, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: pagination mechanism ('explicit pagination') and use case ('iterating through large collections'). However, it lacks details on error handling, rate limits, authentication needs, or what happens if parameters are invalid. The description adds value but doesn't fully compensate for the lack of annotations.
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 highly concise and well-structured with two sentences: the first states the purpose, and the second provides usage guidance. Every sentence earns its place, and it's front-loaded with the core functionality. No wasted words or 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?
Given the tool's moderate complexity (pagination tool with 3 parameters), no annotations, and no output schema, the description is minimally adequate. It covers purpose and usage but lacks details on return values, error cases, or performance characteristics. It meets basic needs but leaves gaps that could hinder effective tool selection.
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 description coverage is 100%, so the schema already documents all three parameters (deckId, bookmark, pageSize) with their types and descriptions. The description doesn't add any additional meaning beyond what the schema provides, such as explaining pagination flow or default behaviors. Baseline 3 is appropriate when the schema does the heavy lifting.
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: 'Fetch a single page of cards with explicit pagination.' It specifies the verb (fetch), resource (cards), and scope (single page with pagination). However, it doesn't explicitly differentiate from sibling tools like 'get_cards' or 'search_cards', which might offer different retrieval mechanisms.
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 clear context on when to use this tool: 'Use for iterating through large collections.' This implies it's suitable for paginated access to large datasets. It doesn't explicitly state when not to use it or name alternatives, but the context is helpful for understanding its intended application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_decksB
List all Mochi flashcard decks
| Name | Required | Description | Default |
|---|---|---|---|
| includeArchived | No | Include archived decks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('List all') but doesn't describe return format, pagination, permissions needed, or error conditions. For a list operation with zero annotation coverage, this is a significant gap in transparency.
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 a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple list operation and front-loaded with the essential information.
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 the tool's low complexity (single optional parameter) and 100% schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it should ideally provide more context about what the list returns and any behavioral constraints, but the simplicity of the operation keeps it from being severely incomplete.
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 description coverage is 100%, with the single parameter 'includeArchived' fully documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
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 verb ('List') and resource ('all Mochi flashcard decks'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'find_deck_by_name' or 'get_deck', which also retrieve deck information but with different scopes or filtering capabilities.
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 no guidance on when to use this tool versus alternatives like 'find_deck_by_name' or 'get_deck'. It lacks any mention of prerequisites, context for use, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tags_previewA
Preview removing tags from one or more cards. Returns a token for apply_tags_update.
| Name | Required | Description | Default |
|---|---|---|---|
| cardIds | Yes | Card IDs to remove tags from | |
| tagsToRemove | Yes | Tags to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals this is a preview operation (not an actual mutation) and mentions the token return, which is valuable context. However, it doesn't disclose permissions needed, rate limits, error conditions, or what happens if tags don't exist on cards.
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 extremely concise with just two sentences that each serve a distinct purpose: the first states the tool's function, the second explains the return value and its purpose. There's zero wasted language or 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?
For a preview tool with 2 parameters and no annotations or output schema, the description provides the essential context about it being a preview operation and token return. However, it lacks information about what the preview actually shows, error handling, or limitations, leaving some gaps in understanding the tool's full behavior.
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 description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema descriptions, maintaining the baseline score of 3 for adequate coverage through structured data 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 the specific action ('Preview removing tags') and target resource ('from one or more cards'), distinguishing it from sibling tools like 'add_tags_preview' or 'apply_tags_update'. It explicitly identifies what the tool does in a precise verb+resource format.
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 states when to use this tool ('Preview removing tags') and provides a clear alternative ('Returns a token for apply_tags_update'), indicating this is a preview operation that should be followed by the apply tool. This gives explicit guidance on workflow sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cardsB
Search cards by content, tags, or date. Returns rich results with deckId, createdAt, updatedAt. Includes scannedCount and truncated flags.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Text to search in card content | |
| deckId | No | Deck ID (optional - searches all decks if omitted) | |
| tags | No | Filter by tags (all must match) | |
| createdAfter | No | Filter cards created on or after this date (ISO 8601 UTC format). For "today" or "yesterday", calculate and pass the date. | |
| createdBefore | No | Filter cards created before this date (ISO 8601 UTC format) | |
| limit | No | Max results (default 20, max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds some behavioral context by mentioning the return format ('rich results with deckId, createdAt, updatedAt') and flags ('scannedCount and truncated flags'), which helps understand output behavior. However, it doesn't cover critical aspects like rate limits, authentication needs, or error handling, leaving gaps for a search tool.
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 concise and front-loaded, stating the core functionality in the first sentence and adding output details in the second. Both sentences earn their place by providing essential information without redundancy. However, it could be slightly more structured by explicitly separating search inputs from output details for clarity.
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 the complexity of a search tool with 6 parameters and no output schema, the description is moderately complete. It covers the basic purpose and output format but lacks details on error cases, pagination, or how results are ordered. Without annotations, it should provide more behavioral context to fully guide an agent, leaving room for improvement.
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 input schema has 100% description coverage, so parameters are well-documented in the schema itself. The description adds minimal value beyond the schema, as it only mentions search criteria ('content, tags, or date') without explaining parameter interactions or usage nuances. This meets the baseline for high schema coverage but doesn't enhance understanding significantly.
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: 'Search cards by content, tags, or date.' It specifies the resource (cards) and the search criteria, making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'list_cards_page' or 'get_cards', which might have overlapping functionality, so it doesn't reach the highest score.
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 no guidance on when to use this tool versus alternatives. With siblings like 'list_cards_page', 'get_cards', and 'find_deck_by_name', there's no indication of scenarios where 'search_cards' is preferred, such as for complex queries versus simple listing. This lack of comparative context leaves usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_card_fields_previewB
Preview changes to specific fields (Question, Answer, Tags). Reconstructs full markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | Card ID to update | |
| question | No | New question text | |
| answer | No | New answer text | |
| tags | No | New tags |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'preview' operation, implying it's non-destructive and read-only, but doesn't clarify if it requires specific permissions, how it handles partial field updates, or what the preview output looks like. For a tool with mutation-like parameters (question, answer, tags) but preview behavior, more context on safety and output format is needed.
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 extremely concise and front-loaded with essential information in just two sentences. The first sentence covers the core purpose and parameters, while the second adds important behavioral context ('Reconstructs full markdown'). There is no wasted verbiage, and every word earns its place.
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 the tool's complexity (previewing changes to multiple fields), lack of annotations, and no output schema, the description is moderately complete but has gaps. It clarifies the preview nature and specific fields, but doesn't explain the preview output format, error conditions, or how it differs from similar sibling tools. This leaves the agent with incomplete context for reliable invocation.
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 description lists the specific fields (Question, Answer, Tags) that can be previewed, which adds meaning beyond the input schema's parameter names. However, with 100% schema description coverage, the schema already documents each parameter thoroughly (e.g., 'cardId' as 'Card ID to update'). The description doesn't provide additional syntax, format, or constraints, so it meets the baseline for high schema coverage.
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: 'Preview changes to specific fields (Question, Answer, Tags). Reconstructs full markdown.' It specifies the verb ('Preview changes'), resource ('specific fields'), and scope ('Reconstructs full markdown'), making it clear this is a preview operation rather than an actual update. However, it doesn't explicitly distinguish itself from sibling tools like 'update_card_preview' or 'update_cards_batch_preview', which appear to serve similar preview functions.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a cardId), exclusions, or compare it to siblings like 'update_card_preview' or 'apply_update_card'. The agent must infer usage from the name and description alone, which is insufficient for optimal tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_card_previewA
Preview changes to a card with diff. IMPORTANT: After calling this, you MUST show the diff to the user and ask "Do you want to apply this change?" WAIT for explicit confirmation before calling apply_update_card.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | Card ID to update | |
| content | Yes | New markdown content | |
| tags | No | New tags (replaces existing) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a non-destructive preview operation (implied by 'Preview changes' and the requirement to confirm before applying), and it establishes a specific workflow requirement (showing diff and waiting for confirmation). However, it doesn't mention rate limits, authentication needs, or what happens if the card doesn't exist.
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 extremely concise and front-loaded with the core purpose in the first sentence, followed by critical workflow guidance. Every sentence earns its place by providing essential information about the tool's purpose and required usage pattern.
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?
For a mutation-related tool with no annotations and no output schema, the description does well by clearly establishing the preview nature of the operation and the required confirmation workflow. However, it doesn't describe what the preview output looks like or what happens in error cases, leaving some gaps in completeness.
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 description coverage is 100%, so the schema already documents all three parameters. The description doesn't add any additional parameter semantics beyond what's in the schema - it doesn't explain format expectations, constraints, or examples. The baseline of 3 is appropriate when the schema does the heavy lifting.
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 with a specific verb ('Preview changes') and resource ('to a card with diff'), distinguishing it from siblings like 'apply_update_card' which actually applies changes. It explicitly indicates this is a preview operation rather than an actual update.
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 guidance on when to use this tool versus alternatives: it states that after calling this tool, you MUST show the diff to the user and ask for confirmation before calling 'apply_update_card'. This creates a clear workflow distinction between preview and application tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cards_batch_previewC
Preview updates for multiple cards at once.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | List of updates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'preview' which suggests non-destructive read-only behavior, but doesn't clarify if this is a dry-run simulation, what the preview output looks like, whether it validates inputs, or if there are rate limits. For a batch operation tool with zero annotation coverage, this is insufficient.
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?
Extremely concise single sentence with zero waste - 'Preview updates for multiple cards at once.' Front-loaded with the core purpose. Every word earns its place.
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?
For a batch preview tool with no annotations and no output schema, the description is inadequate. It doesn't explain what the preview shows, how results are returned, error handling for invalid updates, or limitations on batch size. Given the complexity of batch operations and lack of structured metadata, more context is needed.
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 description coverage is 100%, with the 'updates' parameter fully documented in the schema. The description adds no additional parameter semantics beyond implying batch processing of multiple cards. Baseline 3 is appropriate when the schema does the heavy lifting.
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 action ('Preview updates') and resource ('multiple cards'), distinguishing it from single-card preview tools like 'update_card_preview'. However, it doesn't specify what kind of updates (content/tags) or how it differs from 'apply_update_cards_batch' which likely applies rather than previews.
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?
No guidance on when to use this tool versus alternatives like 'update_card_preview' (single card) or 'apply_update_cards_batch' (actual application). The description implies batch operations but doesn't specify prerequisites, limitations, or comparative contexts with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
20 tool updates
v1.0.0- First observed
add_tags_preview - First observed
apply_create_card - First observed
apply_tags_update - First observed
apply_update_card - First observed
apply_update_cards_batch - First observed
create_card_preview - First observed
create_deck - First observed
delete_card - First observed
delete_deck - First observed
find_deck_by_name - First observed
get_card - First observed
get_cards - First observed
get_deck - First observed
list_cards_page - First observed
list_decks - First observed
remove_tags_preview - First observed
search_cards - First observed
update_card_fields_preview - First observed
update_card_preview - First observed
update_cards_batch_preview
TDQS
Scored across 20 tools
Most tools have distinct purposes, such as create_card_preview vs. apply_create_card for previewing and confirming card creation, or get_card vs. get_cards for single vs. bulk retrieval. However, there is some overlap between update_card_preview and update_card_fields_preview, both used for previewing card updates, which could cause minor confusion for agents.
Tool names follow a consistent snake_case pattern with clear verb_noun structures, such as create_card_preview, apply_create_card, and list_decks. The naming is predictable and readable throughout the set, with no deviations or mixed conventions.
With 20 tools, the count is slightly high but reasonable for a flashcard management server, covering operations like creation, updates, deletion, searching, and deck management. It includes necessary preview and confirmation steps, though it could be streamlined without losing functionality.
The tool set provides comprehensive coverage for flashcard management, including full CRUD operations for cards and decks (e.g., create, get, update, delete), batch processing, tagging, searching, and pagination. There are no obvious gaps, and agents can handle typical workflows without dead ends.
Maintenance
Related MCP Connectors
- FlipnemOAuthcom.flipnem
Build and study spaced-repetition flashcards with your agent.
Connect AI to your flomo notes. Search, create, edit notes and manage tags via MCP.
- manthanOAuthtech.sirune
List and create Manthan concept-card decks from an AI agent — no AI quota spent for imports.
Read, write, and conversationally review open-source flashcards through split read/write MCP tools.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI assistants to manage Anki flashcard decks and cards through natural language, supporting deck creation, card additions (basic and cloze types), and review queue management.66 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to create and manage Mochi Cards flashcards, including card operations, deck management, templates, and spaced repetition reviews through the Mochi API.12 npm1MIT
- AlicenseAqualityDmaintenanceEnables AI tools to manage Anki flashcards, including deck management, card search, creation, editing, deletion, and statistics.1034 npm3Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to interact with Anki flashcard collections, including deck management, note search, viewing contents, and editing fields.11 npmMIT