Skip to main content
Glama

Create a document from an uploaded PDF

create_document_from_upload

Turn a PDF you PUT to a create_upload_url url into a GoodSign document. Call this only after the PUT has finished successfully. GoodSign discovers any text tags in the PDF (see create_upload_url for the full TAG REFERENCE and rules) and creates one field per tag plus one signer per distinct signer key automatically. This does NOT send anything or email anyone — the result behaves like a template: check it with get_document, then send it with send_from_template. The created document can only be sent once — to send the same PDF again, upload it again with create_upload_url and call this tool a second time. If the response includes warnings about unreadable tags, fix the tag text in the source document, re-export the PDF, call create_upload_url again and retry. MULTIPLE PDFs IN ONE ENVELOPE (e.g. an NDA plus a contractor agreement, signed together for 1 credit): create the first document normally, then for each extra PDF call create_upload_url, PUT it, and call this tool with attach_to_uuid set to the first document's uuid. Signers see the files in the order they were added. Use the same signer keys across files for the same person — one signer per distinct key across the whole envelope. Send once, with the first document's uuid.

Input Schema

NameRequiredDescriptionDefault
doc_nameNoOptional name for the document, e.g. "SoW - Acme Q3". Defaults to "document". When attaching, this names the added file.
upload_idYesThe 40-character hex upload_id returned by create_upload_url, after the PUT to its upload_url has succeeded.
attach_to_uuidNoOptional. uuid of an unsent document (status template or draft) to add this PDF to as an extra file, instead of creating a new document. Use the uuid returned by an earlier create_document_from_upload call.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / attach_to_uuid
      Added value: +{
      +  "description": "Optional. uuid of an unsent document (status template or draft) to add this PDF to as an extra file, instead of creating a new document. Use the uuid returned by an earlier create_document_from_upload call.",
      +  "type": "string"
      +}
    • changedInput schema / properties / doc_name / description
      Previous value: -"Optional name for the document, e.g. \"SoW - Acme Q3\". Defaults to \"document\"."New value: +"Optional name for the document, e.g. \"SoW - Acme Q3\". Defaults to \"document\". When attaching, this names the added file."
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare a non-read-only, non-destructive, non-idempotent mutation, which the description is consistent with. Beyond annotations it discloses auto-creation of fields/signers from text tags, the one-send-per-document constraint, the warnings-and-retry loop for unreadable tags, and the multi-file attach semantics with signer-key deduplication — all behavior an agent could not infer from structured fields.

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 core purpose and the PUT precondition are front-loaded, and the multi-PDF scenario is clearly delineated in its own paragraph. The description is dense and lengthy, but each section carries distinct operational information, so little is wasted.

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?

For a multi-step upload-to-document workflow with no output schema, the description covers preconditions, side effects, retry handling, the one-send limit, and the multi-file envelope case. An agent has everything needed to invoke it correctly and in the right order.

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 the baseline would be 3; the description earns extra by explaining how attach_to_uuid is used in practice (envelope assembly, file ordering, signer keys shared across files, sending once with the first document's uuid). It does not re-explain upload_id beyond what the schema says, so it falls short of a 5.

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 ('Turn a PDF you PUT ... into a GoodSign document') and clearly distinguishes itself from create_upload_url (prerequisite upload) and send_from_template (subsequent send). An agent can pick it out of the sibling list without reading the schema.

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?

Gives explicit preconditions ('Call this only after the PUT has finished successfully'), states what it does not do ('does NOT send anything or email anyone'), and names the correct next steps (get_document, send_from_template). It also documents the multi-PDF envelope workflow with the exact sequence of tool calls.

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