Skip to main content
Glama

request_receipt_upload

Step 1 of 2 for uploading a local receipt file. Returns a presigned S3 PUT URL (uploadUrl), a signed uploadKey, and a literal curlCommand to execute in your code sandbox to stage the file. The file bytes are sent directly to S3 — they never enter the conversation context. After the curl PUT succeeds, call finalize_receipt_upload with the returned uploadKey to run OCR + matching. Use this for any local file (PDF, JPEG, or PNG, max ~5 MB).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "fileName": "<fileName>",
      "mimeType": "<mimeType>",
      "fileSizeBytes": "<fileSizeBytes>"
    },
    "name": "request_receipt_upload"
  }
}

Input Schema

NameRequiredDescriptionDefault
fileNameYesOriginal file name (used for the audit trail). E.g. 'rent-may.pdf'.
mimeTypeYesMIME type. Only PDF, JPEG, and PNG are accepted by the pipeline.
fileSizeBytesYesSize of the file in bytes (use `wc -c <file>` or your stdlib's stat). Signed into the URL — the S3 PUT will fail if the actual body doesn't match.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare it is not read-only and not destructive; the description adds substantive behavior: a presigned S3 PUT, that bytes never enter conversation context, that a literal curlCommand must be run in a sandbox, and that OCR + matching happen in the subsequent finalize call. That is exactly the kind of operational detail annotations cannot convey.

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?

Four tight sentences, front-loaded with 'Step 1 of 2', then outputs, then the critical sandbox/curl mechanic, then the follow-up call. No filler and the sequencing is easy to follow.

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

Completeness5/5

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

There is no output schema, and the description compensates fully by enumerating the return values (uploadUrl, uploadKey, curlCommand) and explaining how each is used downstream. For a two-step upload workflow with three params, an agent has everything needed to invoke it correctly.

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 100%, so baseline is 3. The description still adds value beyond the schema by stating the accepted formats and a ~5 MB size ceiling, which the schema itself does not encode for fileSizeBytes. It doesn't re-explain individual parameter fields, which is fine given the coverage.

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 ('request ... uploading a local receipt file') and names its position in a two-step flow. It also distinguishes itself from the sibling finalize_receipt_upload by naming that tool as the next step, and 'local file' implicitly separates it from import_receipt_from_url.

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?

Gives clear when-to-use context: any local PDF/JPEG/PNG up to ~5 MB, followed by an explicit next step ('After the curl PUT succeeds, call finalize_receipt_upload'). It does not explicitly name import_receipt_from_url as the alternative for remote files, so the exclusion is only implied.

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