Skip to main content
Glama

Prepare invoice CSV

export_invoice_records
Read-onlyIdempotent

Processes the reviewed invoice fields you supply and returns spreadsheet-safe CSV text, a filename, media type, and summary. Invalid and duplicate rows remain visible. Invoice Table does not store the tool input or output after the response.

Input Schema

NameRequiredDescriptionDefault
recordsYes

Output Schema

NameRequiredDescriptionDefault
csvYes
summaryYes
filenameYes
mediaTypeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "csv": {
      +      "type": "string"
      +    },
      +    "filename": {
      +      "type": "string"
      +    },
      +    "mediaType": {
      +      "const": "text/csv",
      +      "type": "string"
      +    },
      +    "summary": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "accountingEligibleCount": {
      +          "type": "integer"
      +        },
      +        "arithmeticCheckedCount": {
      +          "type": "integer"
      +        },
      +        "arithmeticMismatchCount": {
      +          "type": "integer"
      +        },
      +        "blockedCount": {
      +          "type": "integer"
      +        },
      +        "duplicateCount": {
      +          "type": "integer"
      +        },
      +        "invoiceCount": {
      +          "type": "integer"
      +        },
      +        "readyCount": {
      +          "type": "integer"
      +        },
      +        "reviewCount": {
      +          "type": "integer"
      +        },
      +        "totalsByCurrency": {
      +          "additionalProperties": {
      +            "type": "number"
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "invoiceCount",
      +        "readyCount",
      +        "reviewCount",
      +        "blockedCount",
      +        "duplicateCount",
      +        "arithmeticCheckedCount",
      +        "arithmeticMismatchCount",
      +        "accountingEligibleCount",
      +        "totalsByCurrency"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "filename",
      +    "mediaType",
      +    "csv",
      +    "summary"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavioral facts: invalid and duplicate rows are preserved in the output rather than dropped, and the service retains neither input nor output after the response. That data-retention statement is the kind of thing an agent cannot infer from annotations. It stops short of describing row ordering or what the summary contains.

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 carrying a distinct payload: what it does, what it returns, and two non-obvious behavioral guarantees. No repetition of the title or annotations, and the return values are front-loaded.

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?

An output schema and rich annotations mean the description need not explain return structure or safety, which it correctly does not. The remaining gap is the input contract: for a bulk record-ingesting tool with an undocumented nested schema and a 1000-record cap, an agent gets no guidance on what each record should contain or how malformed input is treated beyond 'remains visible.'

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 0% for the single `records` array, so the description carries the burden — but it only characterizes the input as 'reviewed invoice fields,' saying nothing about the per-record fields (category, filename), nullability, or the 1–1000 item bounds. It adds framing but not field-level meaning.

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 a specific transformation plus return surface: processes supplied invoice fields and returns 'spreadsheet-safe CSV text, a filename, media type, and summary.' The qualifier 'reviewed invoice fields you supply' implicitly positions it downstream of validate_invoice_records, but no sibling is named, so differentiation is inferred rather than stated.

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?

'Reviewed invoice fields' implies the tool should be called after the records have been validated, which is useful sequencing context. However, there is no explicit statement of when to call this versus analyze_invoice_text or validate_invoice_records, and no exclusions or preconditions.

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.

Resources