Skip to main content
Glama

Update Public Link

update_link
DestructiveIdempotent

Replace a public link's configuration. THIS IS A FULL REPLACE — anything you leave out is lost. ALWAYS call get_link first and send back the complete configuration with your changes applied; every property round-trips, so nothing is lost by doing it that way. fileId is the one exception: omit it to keep the link's current document. The public URL survives an edit, so anyone already holding the link keeps a working one, and editing is NOT billed again. A disabled link cannot be edited and returns 409 — duplicate it instead. Owner only: a colleague can read and disable a shared link but not edit it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoName of the link. This is a full replace — send the current name back from get_link unless you are changing it.
fileIdNoFile ID from upload_file. Omit to keep the link's current document.
linkIdYesUnique identifier of the public link
languageNoLanguage of the signing experience
aiAssistantNoOptional AI assistant that helps signees while reviewing the document. Requires the aiAssistant capability.
signeeDetailsYesReplaces the link's signature slots entirely. Take these from get_link and modify them rather than composing a new list.
sharingSettingNoWho on the account may administer the link.
disablePrintingNoPrevent signers from printing the document.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / signeeDetails / items / properties / hidePersonalNumber / description
      Previous value: -"Leave the signer's personal number out of the rendered signature. Only meaningful for signature types that collect one."New value: +"Leave the signer's national identity number off the rendered signature. Only meaningful for bankid_identification: the signer's BankID identification supplies that number to Formify's signing page, which prints it beside the signature by default. The number is handled by the signing page alone — it is never sent to, returned by or stored through this API."
    • changedInput schema / properties / signeeDetails / items / properties / idScanBox / description
      Previous value: -"Required when signatureType is 'digital_ink_id_scan', unused otherwise."New value: +"Required when signatureType is 'digital_ink_id_scan', unused otherwise. The ID document itself is captured and read on Formify's signing page; only the placeholder's position is configured here, and no image or document data passes through this API."
    • changedInput schema / properties / signeeDetails / items / properties / paymentLink / description
      Previous value: -"Collect a payment before this slot can be signed. Payment links are set up in the Formify client, not through this API — do not invent an id. The link must allow multiple use, since one public link is signed by many people. Requires the signAndPay capability."New value: +"Require a payment before this slot can be signed, by referencing a payment link that already exists on the account. Payment links are set up in the Formify client, not through this API — do not invent an id. The payment itself is taken on Formify's signing page: no card or payment data is collected, transmitted or stored by this API. The link must allow multiple use, since one public link is signed by many people. Requires the signAndPay capability."
    • changedInput schema / properties / signeeDetails / items / properties / signatureType / description
      Previous value: -"Signature method for this slot. Same values and capability requirements as on a document: digital_ink (default), bankid_identification (signatureBankId), digital_ink_id_scan (signatureIdScan), face_liveness (signatureFaceLiveness). Call get_account_capabilities before using a non-default type."New value: +"Signature method for this slot. Same values and capability requirements as on a document: digital_ink (default), bankid_identification (signatureBankId), digital_ink_id_scan (signatureIdScan), face_liveness (signatureFaceLiveness). Call get_account_capabilities before using a non-default type. Identity verification for bankid_identification, digital_ink_id_scan and face_liveness is performed by Formify's signing page in the signer's browser, after the invitation is sent. This parameter only selects the method: no identity document, biometric data or national identity number is sent to, returned by or stored through this API."
  2. Added

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint/destructiveHint/idempotentHint annotations, it discloses the full-replace destructive semantics, the fileId exception, that the public URL survives edits, that editing is not billed again, the 409 on disabled links, and permission restrictions. This is substantial behavioral context that cannot be inferred from annotations or schema alone.

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?

The description is dense but every sentence earns its place: full-replace warning, get_link workflow, fileId exception, URL/billing behavior, disabled-link error, and ownership permissions. Critical warnings are front-loaded and not padded with schema repetition.

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 complex 8-parameter update with nested objects, no output schema, and annotations covering mutating/destructive behavior, this description supplies the workflow, edge cases, and permission constraints needed to invoke the tool correctly. No critical selection or invocation detail 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 the schema already documents each parameter. The description still adds cross-parameter semantics: complete configuration must round-trip from get_link and only fileId may be omitted to preserve the current document. This is valuable global guidance beyond individual schema 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?

The description opens with a specific verb-resource pair — 'Replace a public link's configuration' — and the title reinforces it. It is clearly distinguished from siblings like create_link, disable_link and duplicate_link because it frames the operation as replacing an existing link's full configuration.

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 gives explicit preconditions and alternatives: ALWAYS call get_link first and send back the complete configuration, duplicate a disabled link rather than editing it, and owner-only editing establishes when use is allowed. This tells the agent both how to invoke it correctly and when to route to a different tool.

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