Skip to main content
Glama

Create document upload link

create_regulation_upload_link

Generate a one-time browser link (URL + QR code) for encrypted document upload. Pass identity_id and/or address_id (+ requirement_id) — the page will show upload slots only for the proofs that are still missing. Pass did_ids to also create the verification automatically when the user submits: purpose "registration" creates an address verification, purpose "emergency" creates an emergency verification. Returns upload_url and qr_code_url (plus qr_svg when qr: "svg" is requested). Priority #1: show upload_url as a clickable link — it always works. The QR lets the user continue on a phone and photograph documents with the camera: offer qr_code_url as a plain link, but do NOT rely on it as a markdown image — some clients (incl. claude.ai) gate external images behind a click. Request qr: "svg" ONLY if your client can render SVG through an HTML/artifact/widget capability; never paste raw SVG markup into plain reply text — chat clients escape it into a wall of code. Files are encrypted in the browser; the server never sees plaintext. The link works once; its lifetime is account-specific — quote expires_in_minutes from the response, never assume a fixed value. After the user says they are done, call check_upload_status with the returned token. If nothing is missing, skip the link and call create_address_verification / create_emergency_verification directly. To upload a document the requirement does NOT demand (voluntary/preventive upload, or replacing an existing document), use the create_proof_upload_link tool instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qrNoQR delivery: "url_only" (default) returns qr_code_url only; "svg" additionally includes qr_svg — ~7 KB of inline SVG markup. Request "svg" ONLY when your client can render SVG through an HTML/artifact/widget capability — raw SVG pasted into chat text gets escaped, not rendered.
did_idsNoDID UUIDs to verify. Presence means the verification is created automatically on upload. All DIDs must share one country and group type.
purposeNoWhat the upload is for: "registration" (default, DID address verification) or "emergency" (emergency calling verification).
address_idNoAddress UUID — include to collect missing address proofs. Required when did_ids is passed.
identity_idNoIdentity UUID — include to collect missing identity proofs.
requirement_idNoRegulation requirement UUID (from list_requirements). Optional when did_ids is passed (then it is derived from the DIDs).
emergency_calling_service_idNoFor purpose "emergency": existing Emergency Calling Service UUID to resubmit the verification for — did_ids is not needed then (omit when verifying new DIDs).

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, idempotent=false, destructive=false): one-time link, browser-side encryption so the server never sees plaintext, account-specific lifetime with an instruction to quote expires_in_minutes rather than assume a fixed value, and the side effect that did_ids auto-creates the verification on submission. That is meaningful mutation-behavior context annotations alone do not convey.

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 purpose, then params, then return values, then an explicit 'Priority #1' rendering instruction — the structure is deliberate. It is long and includes client-specific QR/markdown-image guidance that borders on verbose, but each block is operational and earns its place for an agent handling link delivery.

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?

With no output schema, the description fully documents the return values (upload_url, qr_code_url, and qr_svg when qr:'svg'), and it covers all 7 parameters plus the follow-up tool call. Nothing an agent needs to invoke and then use the result correctly is missing.

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, but the description adds combination logic the per-field schema text does not: the interplay of identity_id/address_id/requirement_id, how did_ids plus purpose ('registration' vs 'emergency') selects which verification is created, and when emergency_calling_service_id substitutes for did_ids. Useful cross-parameter meaning beyond the schema's field-by-field descriptions.

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+resource ('Generate a one-time browser link (URL + QR code) for encrypted document upload') and immediately distinguishes itself from create_proof_upload_link, create_address_verification, and create_emergency_verification. An agent can pick this tool apart from its closest siblings without opening any 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?

Explicit conditional routing: pass identity_id/address_id/requirement_id to collect missing proofs, 'If nothing is missing, skip the link and call create_address_verification / create_emergency_verification directly,' use create_proof_upload_link for voluntary uploads, and call check_upload_status after the user finishes. Both the when and the when-not are stated with named alternatives.

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