Skip to main content
Glama

Lovie Company Formation

Get Effective Transaction Categories

transaction_explain_bookings
Read-only

Explain how transactions were booked: for each transaction id, the chart-of-accounts account and category it is booked to, whether the account was set on the transaction or inherited from its merchant, who wrote it (USER is a person, AUTO a rule posting without review, ENRICHMENT the AI or a rule awaiting review, IMPORT an import), and the rule that wrote it — set_by_rule_id with the rule's version at the time, or set_by_rule_code for a Lovie platform rule. An empty rule id and code means no rule booked it. Read the rule itself with transaction_get_categorization_rule to see its conditions; it returns the rule's current wording, which may be newer than the version recorded here. Read-only; up to 500 ids per call.

Input Schema

NameRequiredDescriptionDefault
companyIdYesUUID value wrapper.
transactionIdsNo

Output Schema

NameRequiredDescriptionDefault
categoriesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / categories / items / properties / splitLines / items / properties / category
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "key": {
      +          "anyOf": [
      +            {
      +              "description": "Lowercase kebab-case code identifier.",
      +              "properties": {
      +                "value": {
      +                  "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "ownerKey": {
      +          "type": "string"
      +        },
      +        "ownerType": {
      +          "enum": [
      +            "OWNER_TYPE_UNSPECIFIED",
      +            "OWNER_TYPE_SYSTEM",
      +            "OWNER_TYPE_COMPANY",
      +            "OWNER_TYPE_INTEGRATION"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "key"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  2. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/destructiveHint=false, yet the description still adds the 500-id batch ceiling and the important freshness caveat that recorded rule versions can lag current rule wording. It also defines the semantics of empty rule id/code. Return-shape detail is deferred to the output schema, which is appropriate.

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?

Front-loaded with the core purpose, then a compact gloss of the origin codes and rule fields, then the alternative-tool pointer. The long middle sentence is dense but each clause explains a distinct response field; little is wasted.

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 two-parameter read tool with an output schema and safety annotations, the description covers the interpretive burden (origin-code meanings, inheritance vs. override, rule version drift) that structured fields cannot. Only company scoping and pagination-adjacent behavior go unstated, both minor here.

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 coverage is only 50% (both params are bare UUID wrappers), but the description compensates by explaining that transactionIds are per-transaction lookups and capping the batch at 500 ids, matching the schema's maxItems. companyId scoping is left implicit.

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?

States a specific verb and resource — explaining how each transaction was booked — and enumerates exactly what comes back (account, category, inheritance source, writer origin, rule id/version/code). This is clearly separable from siblings like transaction_get_transaction or accounting_get_journal_entry_by_transaction.

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?

Explicitly routes the agent to transaction_get_categorization_rule to inspect rule conditions, and explains that the rule's current wording may be newer than the version recorded here — a real usage caveat. It does not, however, contrast itself with transaction_get_transaction or the journal-entry tools, so the when-not side is only partially covered.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.