Skip to main content
Glama

Taokeh MCP server

Request attachment upload

request_attachment_upload

Get a one-time link to upload a receipt/bill/statement/document that is too large to inline as attachmentBase64 (a real photo or a multi-page PDF — base64 inside a tool call is very costly). Returns an uploadUrl and an attachmentToken: PUT the file's RAW bytes to uploadUrl within the time limit, then pass attachmentToken IN PLACE OF attachmentBase64 to create_expense_draft / create_invoice_draft / create_bill_draft / create_quote_draft / create_receipt_draft / create_contact_draft / create_journal_draft — the file rides that draft and lands on the posted document on approval, exactly as an inline attachment does — or to import_bank_statement, which archives it as the statement's original. CALL THIS FIRST, BEFORE the create/import call: filing bare and adding the file after is the harder path. If you DID already file bare, the repair on the five document lanes (expense, invoice, bill, quote, receipt) is to call the same create tool AGAIN with the IDENTICAL reference + date + amount plus attachmentToken — while the draft is still pending the file is ADOPTED onto it (the result says duplicateAttachment:'added') and no second draft is created; the same repair works on import_bank_statement with the identical account, balances and rows. The link is single-use, expires quickly, and works only for this company. Use this for anything bigger than a few KB; keep attachmentBase64 for tiny files only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filenameNoOptional original filename, e.g. receipt.jpg — travels with the upload and shows on the review card.
mediaTypeNoOptional hint of the file's MIME type, e.g. 'image/jpeg'. Advisory only — the server determines the real type from the file's own bytes (magic bytes), so a wrong hint changes nothing.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

The annotations give little behavioral detail, so the description carries the full burden, and it does so thoroughly. It discloses that the link is single-use, expires quickly, is company-specific, that the server determines MIME type from raw bytes, and that the token can be adopted onto an already-pending draft, including the duplicateAttachment result.

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?

Although long, the description is dense with non-redundant, decision-relevant information: purpose, usage order, repair workflow, and constraints. It is front-loaded with the core purpose and each subsequent sentence addresses a likely agent question or failure mode.

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?

Given there is no output schema, the description compensates by explicitly naming the return values (uploadUrl, attachmentToken) and explaining how they are used. It covers the complete workflow across all sibling create tools, the bank import path, and the re-file repair scenario, leaving no significant gap for an agent.

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%, so the schema already fully documents filename and mediaType, including the advisory nature of mediaType. The tool description adds no new parameter-specific meaning beyond what the schema provides, so the baseline of 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 opens with a specific verb and resource: 'Get a one-time link to upload' a document, and clarifies the exact use case (large files too costly to inline as attachmentBase64). It clearly distinguishes itself from sibling create/import tools and from get_attachment by focusing on the upload-link step.

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?

It provides explicit when-to-use guidance ('Use this for anything bigger than a few KB; keep attachmentBase64 for tiny files only') and when-to-call ordering ('CALL THIS FIRST, BEFORE the create/import call'). It names the alternative (inline attachmentBase64) and even includes a detailed repair path if the create call was already made without the token.

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