Skip to main content
Glama
przbadu

Firefly III MCP Server

by przbadu

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.1

  • Disambiguation5/5

    Each tool has a crystal-clear, distinct purpose with no overlap. Resources (account, budget, category, tag, transaction) are cleanly separated from actions (create, delete, get, list, update, search), and list_transactions is appropriately distinguished from search_transactions by their filtering capabilities.

    Naming Consistency5/5

    Perfect consistency using the pattern firefly_{action}_{resource} throughout. All 23 tools use snake_case, share the same 'firefly_' prefix, and use consistent verbs (create, delete, get, list, search, update) paired with singular resource nouns.

    Tool Count4/5

    At 23 tools, the count exceeds the typical ideal range (3-15) and is on the heavier side, but remains reasonable for a comprehensive personal finance API. Each tool earns its place by providing full CRUD coverage across five distinct resource types, with no redundant or trivial tools.

    Completeness4/5

    Strong CRUD coverage for all five resource types, with create, list, update, and delete operations for each. Minor gaps exist: get operations are only provided for accounts and transactions, missing for budgets, categories, and tags (though agents can work around by listing and filtering).

  • Average 3.8/5 across 20 of 23 tools scored. Lowest: 2.9/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is failing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior2/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    While annotations declare the safety profile (readOnlyHint: false, destructiveHint: false), the description adds no behavioral context. It omits critical information implied by idempotentHint: false regarding duplicate creation, does not explain validation rules, success responses, or whether category names must be unique within Firefly III.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The four-word description is extremely concise with no redundancy. However, it is arguably underspecified rather than efficiently minimal, as it wastes no words but also fails to include necessary behavioral warnings.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple two-parameter creation tool with complete schema documentation and comprehensive annotations, the description is minimally adequate. However, given the non-idempotent nature of the operation, it lacks important context about duplicate handling that would be necessary for safe agent operation.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage ('Category name' and 'Optional notes'), the schema adequately documents parameters. The description adds no additional semantic value regarding parameter usage, but the baseline score of 3 is appropriate given the schema completeness.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description uses the specific verb 'Create' and resource 'transaction category', clearly identifying the tool's function. However, it does not distinguish from sibling tools like 'firefly_update_category' or explain what distinguishes a category from other Firefly III entities like budgets or tags.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    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 fails to mention that 'idempotentHint' is false, meaning duplicate calls create multiple categories, and does not advise checking 'firefly_list_categories' first to avoid duplicates.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations declare readOnlyHint=false and destructiveHint=false, establishing this as a safe write operation. The description adds valuable context that tags are specifically for 'labeling transactions.' However, it fails to address idempotency behavior (idempotentHint=false implies duplicates may be created) 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.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Single sentence that is front-loaded with the action. Efficient and free of fluff, though perhaps too terse given the lack of usage guidelines or behavioral details.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Adequate for a simple two-parameter creation tool with good schema coverage. Missing guidance on handling duplicate tag creation (given idempotentHint=false) and lacks return value documentation, though no output schema exists to require it.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100% with clear descriptions ('Tag name', 'Tag description'). The description does not add parameter semantics beyond the schema, but with full coverage, no additional compensation is required.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Clearly states the verb (Create), resource (tag), and scope (for labeling transactions). However, it does not explicitly differentiate from sibling tools like firefly_create_category, which also organizes transactions.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Provides no guidance on when to use this tool versus alternatives (e.g., categories vs. tags), prerequisites, or when to use firefly_update_tag instead. Completely silent on usage context.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds 'with full details', indicating the response includes comprehensive account data rather than a summary, but omits error handling behavior (e.g., account not found) or authentication requirements.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The single 9-word sentence is efficiently front-loaded with the core action and resource. No redundant or filler text is present; every word serves a purpose for this simple retrieval operation.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a single-parameter retrieval tool with strong annotations, the description is minimally adequate. However, without an output schema, it should ideally characterize what 'full details' encompasses (e.g., balance, type, transactions) or error conditions.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage ('Account ID'), the schema fully documents the parameter. The description adds no supplementary parameter semantics (e.g., ID format, where to obtain it), earning the baseline score for high-coverage schemas.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the verb 'Get', the resource 'account', and the scoping 'by ID with full details'. It implicitly distinguishes from the sibling 'firefly_list_accounts' by specifying 'single', though it does not explicitly name the sibling alternative.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    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 'firefly_list_accounts' (use when ID is known vs. when browsing/searching) or prerequisites for the ID parameter.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations cover safety (readOnly, non-destructive) and idempotency. The description adds value by disclosing that auto-budget configuration details are returned, addressing the gap of having no output schema. However, it omits pagination behavior and rate limit implications.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Extremely concise at 7 words with zero filler. The action and scope are front-loaded, and the mention of 'auto-budget configuration' efficiently signals return value content.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the simple pagination schema and rich annotations, the description adequately covers the core purpose. However, without an output schema, it should mention that results are paginated or describe the response structure more fully.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Input schema has 100% description coverage with clear labels ('Max results', 'Page number'). The description adds no parameter-specific context, which is acceptable given the schema completeness, meeting the baseline expectation.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Clearly states the action 'List' and resource 'budgets', and specifies that 'auto-budget configuration' is included in the returned data. The verb distinguishes it from sibling mutation tools (create/update/delete), though it could explicitly contrast with them.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Provides no guidance on when to use this tool versus siblings, when pagination is needed, or prerequisites for invocation. Lacks explicit when-to-use or when-not-to-use criteria.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety profiles. The description adds valuable domain context defining what tags are, but fails to disclose pagination behavior, rate limits, or what the response structure looks like (no output schema exists).

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences with zero waste: first states the action, second provides domain context. Appropriately front-loaded and sized for a simple list operation.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple pagination-based list tool with complete input schema annotations and comprehensive safety annotations, the description is adequate. It explains the domain concept (tags) and scope (all), though it could briefly acknowledge pagination behavior given the lack of output schema.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100% ('Max results', 'Page number'), so the schema fully documents parameters. The description does not mention parameters at all, but with complete schema coverage, the baseline score of 3 is appropriate.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Description clearly states 'List all tags' with specific verb and resource, and adds domain context explaining that 'Tags are flexible labels you can attach to transactions.' However, it does not explicitly differentiate from sibling list tools (e.g., firefly_list_accounts) or clarify scope beyond the resource name.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Description provides no guidance on when to use this tool versus alternatives such as firefly_search_transactions or how to handle pagination. It omits prerequisites like needing to know tags exist or whether results are cached.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, covering safety and behavioral traits. Description adds value by specifying pagination behavior and listing supported filter types, but does not elaborate on rate limits, auth requirements, or what 'key details' means in the return value.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Three efficiently structured sentences: purpose statement, capability enumeration, and return description. Zero redundancy—every sentence conveys distinct information not duplicated in structured fields.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given 100% schema coverage and comprehensive annotations, the description is adequate. It acknowledges the paginated nature of returns, which is crucial since no output schema exists. Could improve by clarifying what 'key details' includes or explicitly noting all parameters are optional.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100%, with all 5 parameters (limit, page, type, start, end) fully documented. Description mentions the filter categories exist but does not add semantic depth, syntax examples, or constraints beyond what the schema already provides.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Clearly states 'List transactions from Firefly III' with specific verb and resource. Mentions filtering capabilities (type, date range, pagination) but does not distinguish from sibling firefly_search_transactions, which likely performs text search versus this tool's structured filtering.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Provides no guidance on when to use this tool versus alternatives like firefly_search_transactions (text search) or firefly_get_transaction (single record retrieval). Does not mention prerequisites or when not to use.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare idempotentHint=true, destructiveHint=false, and openWorldHint=true, covering safety and idempotency. The description adds that it updates 'name, status, or notes,' but since schema coverage is 100%, this adds minimal value. It fails to clarify critical behavioral details like partial update semantics (only provided fields are changed) or error handling when the budget ID does not exist.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description consists of a single, efficient sentence with nine words that front-loads the action verb. There is no redundant or wasted text; every word serves to define the tool's scope.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the simple 4-parameter schema with 100% coverage and comprehensive annotations, the description provides adequate context for basic usage. However, for a mutation tool, it lacks important operational context such as confirmation that omitted fields remain unchanged, potential validation errors, or side effects on related transactions.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage, the baseline score is 3. The description lists the updatable fields (name, status, notes) but does not add semantic meaning beyond what the schema already provides, such as constraints on name uniqueness, format expectations for notes, or clarification that 'status' refers to the 'active' boolean field.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the verb (Update), resource (budget), and specific fields affected (name, status, notes). The word 'existing' effectively distinguishes this from the sibling firefly_create_budget tool, though it does not explicitly name alternatives.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The phrase 'existing budget' implies this should be used for modifying current budgets rather than creating new ones, providing implied usage context. However, it lacks explicit guidance on when to choose this over firefly_create_budget or firefly_delete_budget, and does not mention prerequisites like obtaining the budget ID first.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations indicate the operation is non-destructive and idempotent. The description adds that only the description field is updated (not the tag name itself) and that the tag must be 'existing'. However, it fails to explain idempotency implications, openWorldHint behavior, or what happens if the specified tag does not exist.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is five words, front-loaded with the action verb, and contains no redundancy. Every word serves a distinct purpose: operation (Update), target state (existing), resource (tag), and specific field (description).

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple two-parameter update operation with comprehensive annotations and full schema coverage, the description is minimally sufficient. However, given the lack of output schema, it could benefit from mentioning whether the operation returns the updated tag or simple success status, and behavior when the tag is not found.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage, the schema already fully documents both parameters ('tag' as identifier, 'description' as the updated value). The description aligns with but does not substantially augment the schema's semantic information, warranting the baseline score for high-coverage schemas.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the verb (Update), resource (tag), and specific scope (description). It distinguishes from 'create' by specifying 'existing' tag. However, it does not explicitly differentiate from other update operations in the Firefly family (e.g., update_account), though the tool name handles this.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The phrase 'existing tag' implies a prerequisite (the tag must already exist), suggesting users should use firefly_create_tag for new tags. However, it lacks explicit when-to-use guidance, error handling for missing tags, or mention of the required 'tag' parameter acting as an identifier.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds useful domain context about classification use cases but does not elaborate on behavioral traits like pagination behavior, rate limits, or the open-world nature of results beyond what annotations provide. No contradictions with annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences totaling 13 words. The first states the core action; the second provides domain context with examples. No redundancy or filler content. Efficiently structured with critical information front-loaded.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple list operation with comprehensive annotations and fully documented schema (100% coverage), the description provides adequate context by explaining both the mechanical action (list) and business purpose (transaction classification). No output schema exists, so return value explanation is not required.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Input schema has 100% description coverage with 'Max results' and 'Page number'. The description does not add additional semantic meaning for limit/page parameters, but with complete schema documentation, the baseline score of 3 is appropriate as no compensation is needed.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    States specific verb 'List' and resource 'categories' clearly. Provides domain context that categories classify transactions with concrete examples (Groceries, Rent, Entertainment). However, it does not explicitly distinguish from sibling list operations (e.g., firefly_list_accounts) or when to list versus create/update categories.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Provides implied usage guidance by explaining what categories are for (classifying transactions) and giving examples of category types. However, it lacks explicit when-to-use guidance versus alternatives like firefly_create_category or firefly_search_transactions, and states no prerequisites or preconditions.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already establish this is a non-destructive, idempotent write operation. The description adds value by specifying that partial updates are supported ('name or notes' implies either or both), but does not elaborate on error behavior, authentication requirements, or what constitutes a valid update.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, efficient sentence with no redundant words. Critical information (operation type, target resource, mutable fields) is front-loaded and immediately accessible.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the straightforward CRUD nature of the operation, comprehensive annotations covering safety/behavioral hints, and full schema coverage, the description provides sufficient context for invocation. It appropriately omits return value documentation since no output schema is defined, though it could mention error cases like invalid IDs.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage, the baseline is 3. The description reinforces the purpose of the 'name' and 'notes' parameters by listing them as updatable fields, but adds no additional semantic detail like validation rules, string limits, or format requirements beyond what the schema provides.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description provides a specific verb ('Update'), resource ('category'), and scope ('name or notes'). The word 'existing' clearly distinguishes this from the sibling create_category tool, while specifying the operation distinguishes it from delete_category and list_categories.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    While the word 'existing' implies this is for modifying current categories rather than creating new ones, there is no explicit guidance on when to use this versus firefly_create_category, nor does it mention prerequisites like obtaining the category ID from firefly_list_categories first.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare destructiveHint=true and readOnlyHint=false. The description reinforces this safety profile by emphasizing 'permanently' and 'cannot be undone,' adding valuable consequence context. However, it omits discussion of idempotentHint=true behavior (safe to retry) or openWorldHint=true implications.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences with zero waste: the first establishes the operation and target, the second provides the critical irreversibility warning. Information is front-loaded and appropriately sized for a single-parameter destructive operation.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the simple single-parameter input schema and absence of output schema requirements, the description is complete. It adequately covers the operation's intent and irreversible nature, though it could briefly mention that the ID refers to a transaction group as noted in the schema.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage ('Transaction group ID to delete'), the schema carries the full semantic load. The description references 'by its ID' which aligns with the schema, meeting the baseline expectation without adding redundant parameter details.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the specific action (permanently delete), target resource (transaction), and identifier method (by its ID). It effectively distinguishes from sibling tools like update_transaction or search_transactions through the explicit 'permanently' and 'delete' verbs.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The warning 'This action cannot be undone' provides implied guidance about irreversibility and caution, but lacks explicit when-to-use criteria or named alternatives (e.g., suggesting update_transaction for corrections vs. deletion).

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint, destructiveHint, and idempotent status. The description adds valuable context about the return payload ('account names, balances, and types') which is crucial given the absence of an output schema. It does not contradict annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description consists of exactly two efficient sentences with zero waste. It front-loads the action and resource, immediately follows with the primary filtering capability, and concludes with return value information.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the simple 3-parameter schema with no required fields and the absence of an output schema, the description adequately compensates by describing the return values. It could be improved by explicitly mentioning pagination behavior, but the schema descriptions for 'limit' and 'page' partially cover this.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage, the baseline is 3. The description reinforces the 'type' parameter by calling it an 'optional type filter', but does not add significant semantic meaning beyond what the schema already provides for 'limit' and 'page' parameters.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    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 'accounts', and mentions the optional type filter capability. However, it does not explicitly distinguish this listing operation from the sibling tool 'firefly_get_account' (which likely retrieves a single account), potentially leaving ambiguity about when to use the list versus get operation.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The phrase 'optional type filter' implies the tool can be used with or without filtering, but provides no explicit guidance on when to use this tool versus alternatives like 'firefly_get_account', nor does it mention prerequisites or exclusions for usage.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations indicate idempotent, non-destructive writes. The description adds critical behavioral context beyond annotations: it clarifies partial-update semantics (PATCH-like behavior) where omitted fields are preserved rather than nulled, which is essential for correct invocation.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Extremely efficient two-sentence structure. The first establishes purpose, the second provides the essential partial-update warning. No redundancy or extraneous information.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Adequate for a standard CRUD update with good annotations, but lacks mention of error conditions (e.g., invalid ID), return value structure, or constraints on field combinations (e.g., account_role only valid for asset accounts, noted in schema but not description).

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema coverage, the baseline is 3. The description elevates this by explaining the collective semantics of optional parameters via 'Only provide fields you want to change,' clarifying that null/omitted values leave existing data untouched rather than clearing it.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description states the specific action ('Update') and resource ('an existing account'), with 'existing' implicitly distinguishing it from firefly_create_account. However, it does not explicitly differentiate from firefly_get_account or firefly_delete_account.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The instruction 'Only provide fields you want to change' provides clear usage guidance for the partial-update semantics, but there is no explicit guidance on when to choose this tool over create_account (for new accounts) or whether this preserves transaction history versus delete_account.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations indicate this is a write operation (readOnlyHint=false) and non-destructive. The description adds valuable behavioral context by explaining the mechanics of each auto-budget type (reset vs rollover behavior) and their implications, which goes beyond what annotations provide.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is optimally structured with the core purpose front-loaded in the first sentence, followed by a clearly labeled section for auto-budget options using a scannable list format. No redundant or filler text is present.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the complexity of the auto-budget feature (interdependent parameters: type, amount, period, currency), the description adequately explains the conceptual model and enum values. While it lacks return value documentation (no output schema exists) and error scenarios, it covers the primary functional complexity sufficiently.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage, the baseline is 3. The description adds value by expanding on the auto_budget_type enum values with slightly more detailed explanations (e.g., clarifying 'reset' resets 'to the set amount') and presenting them in an easy-to-scan list format, aiding comprehension beyond the raw schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the verb ('Create') and resource ('budget'), and explains the core purpose ('track spending limits'). However, it doesn't explicitly differentiate from sibling tools like firefly_create_category or firefly_update_budget, which would help the agent select the correct tool.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides implied usage guidance through the detailed explanation of auto-budget options, helping users configure the tool correctly. However, it lacks explicit guidance on when to use this tool versus alternatives like firefly_update_budget, or prerequisites for creation.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    While annotations declare destructiveHint=true, the description adds critical behavioral specifics: the cascading deletion of linked transactions and explicit irreversibility warnings. These details about side effects go beyond the boolean annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Three sentences, each earning its place: action definition, cascade warning, and irreversibility notice. Information is front-loaded with the primary action stated first.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a single-parameter destructive operation with clear annotations, the description adequately covers the action, side effects, and permanent nature. No output schema exists, but the description sufficiently prepares the agent for the operation's consequences.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage ('Account ID to delete'), the schema fully documents the single parameter. The description does not add additional semantic context about the ID format or validation rules, meeting the baseline expectation.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description states a specific verb ('delete') and resource ('account'), clearly distinguishing it from sibling tools like firefly_delete_budget or firefly_delete_transaction. The scope is immediately obvious.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description warns about consequences ('cannot be undone', 'linked transactions will also be deleted') which implicitly signals when to use caution, but provides no explicit guidance on when to choose deletion over firefly_update_account or other alternatives.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    The description adds valuable behavioral context beyond annotations by specifying that linked transactions will have their budget cleared rather than being deleted. This describes the cascade behavior that annotations (destructiveHint, idempotentHint) do not cover. Does not mention idempotent nature, but annotations cover this.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences with zero waste: first establishes the operation, second provides critical side-effect information. Front-loaded and appropriately sized for a single-parameter destructive operation.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the simple 1-parameter schema with complete annotations, the description adequately covers the essential behavioral nuance (transaction side effects). No output schema exists, but for a delete operation, the description sufficiently prepares the agent for the operation's scope.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage ('Budget ID to delete'), the schema fully documents the parameter. The description does not add additional parameter semantics, so baseline 3 is appropriate.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description uses specific verb 'Delete' with resource 'budget', clearly distinguishing it from siblings like firefly_delete_account or firefly_update_budget. The first sentence immediately establishes the tool's function.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides implied usage guidance by disclosing side effects (transactions will have budget cleared), helping users understand consequences. However, it lacks explicit when-to-use guidance versus alternatives like firefly_update_budget or warnings about irreversibility.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    While annotations declare destructiveHint=true, the description adds crucial behavioral context beyond the annotations: specifically that associated transactions are not deleted but rather have their category field cleared. This explains the specific nature of the destruction.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences total. First states the action; second states the critical side effect. No redundant words or boilerplate. Every sentence earns its place by conveying essential information for a destructive operation.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Adequate for a single-parameter delete operation. The annotations cover the safety profile (destructive, idempotent) and the description covers the business logic side effect. Minor gap: does not describe what the tool returns (success indicator, deleted object, etc.) given no output schema exists.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage, the schema already fully documents the 'id' parameter as 'Category ID to delete.' The description mentions 'Delete a category' which aligns with the parameter but adds no additional semantic detail beyond the schema's explanation.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Description uses specific verb 'Delete' with resource 'category' and distinguishes from sibling tools (delete_account, delete_budget, etc.) by specifying the domain. The second sentence further differentiates by explaining the unique side effect on transactions.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Provides implied usage guidance by warning that 'Transactions using this category will have their category cleared,' which helps users understand the consequences. However, it lacks explicit when-to-use guidance or comparison to alternatives like firefly_update_category.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations declare destructiveHint=true, but the description adds crucial behavioral context: the tag is 'removed from all transactions that use it' rather than deleting those transactions or failing due to references. This cascade/unlink behavior is not inferable from annotations alone.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences with zero waste: first states the action, second states the critical side effect. Information is front-loaded and appropriately sized for a single-parameter destructive operation.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Well-covered for its complexity: cascade behavior documented, parameter defined, destructive nature annotated. Minor gap: does not mention idempotency behavior (though annotated) or what constitutes success when the tag doesn't exist.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100% with the single 'tag' parameter fully documented. The description does not add syntax details or examples beyond the schema, warranting the baseline score for high-coverage schemas.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Specific verb 'Delete' plus resource 'tag' clearly stated. The second sentence distinguishes this from sibling delete operations by clarifying the specific cascade behavior (removal from transactions), which differs from how delete_account or delete_budget might behave.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Implies destructive impact on transactions but lacks explicit when-to-use guidance versus alternatives (e.g., when to use update_tag for renaming instead of delete). No explicit prerequisites or exclusions stated.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. Description adds valuable behavioral context about return values ('Returns full details including all splits') which compensates for missing output schema. No contradictions with annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences, zero waste. First sentence establishes core operation; second sentence adds critical return value detail. Efficiently front-loaded with no filler.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Appropriately complete for a simple 1-parameter read operation. Mentions 'splits' (key domain concept) to clarify return structure despite lack of output schema. Could explicitly note that ID refers to transaction group (though schema covers this).

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100% with 'Transaction group ID' documented. Description reinforces usage pattern ('by its ID') but does not add significant semantic meaning beyond the schema. Baseline 3 appropriate when schema carries full documentation burden.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Clear specific verb ('Get') + resource ('transaction') + scope ('single'). Distinguishes from siblings firefly_list_transactions and firefly_search_transactions by emphasizing 'single' and domain-specific detail 'including all splits' (critical for Firefly III's split transaction model).

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Implies usage constraint through 'by its ID' (suggests you must know the specific ID), but lacks explicit when-to-use guidance versus alternatives like firefly_search_transactions or firefly_list_transactions. No mention of prerequisites for obtaining the ID.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations indicate non-destructive write operation (destructiveHint: false, readOnlyHint: false). Description adds critical behavioral constraint that account_role applies 'only for asset accounts', clarifying parameter interdependencies not obvious from schema alone.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Three sentences with zero waste: purpose statement, account type taxonomy, and role constraint. Information is front-loaded and every clause provides essential domain context.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Adequately covers the 11-parameter domain by explaining the conceptual model (types and roles) rather than repeating schema details. No output schema exists; description appropriately focuses on input semantics rather than return values.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema has 100% description coverage. Description enriches enum semantics by mapping abstract types to real-world entities (e.g., 'asset (bank accounts, wallets)', 'ccAsset (credit card)'), helping agents select appropriate values.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Opens with specific verb 'Create' and resource 'account in Firefly III'. Distinguishes from sibling tools (create_budget, create_transaction, etc.) by focusing specifically on account creation and detailing the five account types supported.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Provides clear context for selecting account types (asset for banks/wallets, expense for stores, etc.) and specifies role constraints ('only for asset accounts'). Lacks explicit comparison to siblings like 'use firefly_update_account for existing accounts'.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations indicate idempotentHint=true and destructiveHint=false, establishing safety. The description adds crucial behavioral context that this is a partial update operation ('Only provide the fields you want to change') and mandates a read-before-write workflow, which is essential 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.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences with zero waste. The first sentence states the action and constraint; the second provides the workflow prerequisite. Information is front-loaded and every word earns its place.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a 10-parameter update tool with safety annotations covering idempotency and destructiveness, the description adequately explains the partial update pattern and prerequisite workflow. It appropriately omits return value details (no output schema exists), though it could briefly mention success/failure signaling for full completeness.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    While the schema has 100% description coverage, the description adds essential semantic meaning by clarifying that parameters are optional partial updates ('Only provide the fields you want to change'). This explains the PATCH-like behavior that isn't evident from the schema alone, where all non-id fields appear optional but the semantic intent isn't stated.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description opens with the specific action 'Update an existing transaction', clearly identifying both the verb (update) and resource (transaction). The word 'existing' effectively distinguishes it from the sibling firefly_create_transaction tool.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides explicit workflow guidance: 'First use firefly_get_transaction to retrieve the current values, then pass only the changed fields here.' This establishes the prerequisite step and partial update pattern. However, it lacks explicit 'when not to use' guidance (e.g., contrasting with delete_transaction or create_transaction).

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds valuable behavioral context not in annotations: it explains that simple text searches match against description fields, documents the specific query syntax operators (description_contains, amount_more, etc.), and notes that filters can be combined with spaces. It does not contradict annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Excellent structure: front-loaded purpose statement, clear separation between simple and advanced usage, bulleted syntax examples for scannability, and a concise closing instruction on combining filters. No redundant text; every sentence provides actionable information for query construction.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's complexity (rich query syntax) and lack of output schema, the description appropriately prioritizes documenting the input query language over return values. It comprehensively covers the search DSL. A minor gap is the lack of mention of pagination behavior or result metadata, though page/limit parameters are self-explanatory in the schema.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Despite 100% schema description coverage, the description adds significant value by providing eight concrete query syntax examples (description_contains, amount_is, date_after, etc.) and explaining the fallback behavior for simple text searches. This goes far beyond the schema's basic 'e.g.' example and helps the agent construct valid queries correctly.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Description clearly states 'Search transactions using Firefly III's query syntax' - specific verb (search), resource (transactions), and method (query syntax). This effectively distinguishes it from sibling tools like 'firefly_list_transactions' (simple listing) and 'firefly_get_transaction' (single record retrieval) by emphasizing the advanced search capability.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    While it doesn't explicitly name alternative tools (e.g., 'use list_transactions for unfiltered results'), the extensive documentation of query syntax capabilities provides clear context for when to use this tool versus simple listing operations. It clearly defines the scope of searchable fields and operators, guiding the agent toward using this for filtered/searched retrieval.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Adds valuable behavioral context beyond annotations: explicitly states that Firefly III auto-creates expense/revenue accounts if missing, and documents the return value ('The created transaction with its ID') since no output schema exists. Deducting one point because it doesn't address idempotency (idempotentHint=false) or error scenarios.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Perfectly structured and front-loaded: starts with the core action, follows with three parallel examples for transaction types, then auto-creation note, then return value. Every sentence conveys distinct, high-value information with zero redundancy.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the complexity (14 params including nested splits objects) and lack of output schema, the description covers the primary use cases comprehensively. Minor deduction for not mentioning 'reconciliation' or 'opening-balance' types from the enum, and not explaining the splits parameter usage (though schema coverage compensates for the latter).

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    While the schema has 100% coverage (baseline 3), the description adds crucial semantic relationships not evident in the schema: it explains that source_name for withdrawals should be 'your asset account' while destination_name should be 'the expense account', clarifying the domain logic for how these parameters interact based on transaction type.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description opens with a specific verb+resource ('Create a new transaction in Firefly III') and immediately distinguishes this tool from sibling account/budget/category creation tools by detailing the three specific transaction types supported: withdrawals, deposits, and transfers.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Provides explicit when-to-use guidance for each transaction type with concrete parameter mappings: 'For a withdrawal: provide source_name... and destination_name...', 'For a deposit: provide source_name...', etc. Also notes the auto-creation behavior for missing accounts, which helps agents understand prerequisites.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

firefly-iii-mcp-server MCP server

Copy to your README.md:

Score Badge

firefly-iii-mcp-server MCP server

Copy to your README.md:

Latest Blog Posts

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/przbadu/firefly-iii-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server