Skip to main content
Glama

Update contract terms

assinafy_update_contract
Destructive

Manage an existing document’s CLM record: set creates/patches terms or links a signed amendment; renew starts the next term; terminate closes tracking. Requires a tracking plan. Read first: include terms.updated_at for existing terms or links; renew requires the current term and updated_at, terminate requires updated_at. A conflict needs a fresh read and user review, never blind retries. Only supplied terms change; external_references replaces the list; null can clear values or unlink a pending amendment. Assinafy owns auto-renewal and owner reminders; changes can trigger lifecycle emails/webhooks. These actions do not sign, send or cancel the document itself. Use only for changes the user authorized.

Input Schema

NameRequiredDescriptionDefault
termNoThe term this renewal starts from, the contract's current `term`. Required unless `end_date` is sent; for a contract in another term the renewal is refused, so a repeated request never renews twice.
termsNoEvery attribute is optional and only the ones sent change. `null` clears an attribute, except `auto_renew` (back to `false`) and `currency` (back to `BRL` while a `value` is set); `status` does not accept `null`. A changed `end_date` starts a new `term`.
valueNoThe new value; unchanged when not sent, cleared by `null`.
actionYes
reasonNoKept in the `document_contract_terminated` event; HTML is stripped.
end_dateNoThe new end date, after the current one. Absent, empty or `null`: the current end date plus the renewal term, stepped until it is in the future; `term` is then required.
account_idNo
updated_atNoOptional precondition: the contract's `updated_at` as read. Changed since: `409`, nothing terminated.
document_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

With destructiveHint=true and openWorldHint=true already declared, the description adds substantial behavioral context: partial updates only change supplied terms, null clears values or unlinks a pending amendment, external_references replaces the whole list, changes can trigger lifecycle emails/webhooks, and Assinafy owns auto-renewal and owner reminders. It also explains conflict semantics and that the tool does not sign, send, or cancel the document itself.

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 description is dense but front-loaded: purpose and action modes come first, then preconditions and read-first guidance, then mutation semantics and side effects. Every sentence carries useful information for a complex mutation tool, though the semicolon-heavy packing makes it slightly harder to scan than an ideal definition.

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 a complex, destructive, non-idempotent mutation tool with no output schema, the description covers the key operational context an agent needs: action modes, required preconditions, concurrency behavior, partial-update semantics, side effects, and safety boundaries. Return-value details are unnecessary because no output schema exists, and the remaining field specifics are handled by the rich input schema.

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 description coverage is 67% and the schema itself already documents parameters in depth, but the description adds cross-cutting semantics that are easy to miss: only supplied terms change, null clears values, external_references replaces the list, renew needs the current term and updated_at, and terminate needs updated_at. It does not repeat every field-level rule, but it meaningfully supplements the schema for the action-dependent parameters.

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 starts with a specific verb and resource: managing an existing document's CLM record. It explicitly separates the three modes—set/patch terms or link an amendment, renew the next term, and terminate tracking—and states what the tool does not do (sign, send, cancel), which distinguishes it from sibling document-signing tools.

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 (requires a tracking plan), read-before-write guidance (include terms.updated_at, current term, link updated_at), conflict behavior (fresh read and user review, never blind retries), and authorization guidance (use only for changes the user authorized). This goes well beyond generic usage guidance and tells the agent when and how to invoke each action safely.

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.