Skip to main content
Glama

Update contract

clm_update_contract
DestructiveIdempotent

Partially update approved contract metadata using its current version; stale versions conflict. Send at least one field besides id and expectedUpdatedAt. You may supplement fields, but prefer Contracko's extracted values; manual supplementation is not recommended. Date changes may update scheduled email notifications; changes may update calendar feeds.

Input Schema

NameRequiredDescriptionDefault
idYesID
notesNoNotes
titleNoTitle
statusNoLifecycle status
endDateNoEnd date
partiesNoList-parties IDs, not guessed; A/B primary, third_party not; supplied roles replace, others stay
startDateNoStart date
categoryIdNoType ID; null clears
annualValueNoAnnual value
descriptionNoDescription
isExclusiveNoExclusivity
isOpenEndedNoTrue requires omitting endDate, autoRenewing and renewal settings.
autoRenewingNoFixed-term auto-renewal
governingLawNoGoverning law
jurisdictionNoJurisdiction
reviewStatusNoReview status
financialSummaryNoFinancial summary
liabilitySummaryNoLiability summary
noticePeriodUnitNoNotice unit
customFieldValuesNofieldKey to saved values
expectedUpdatedAtYesSaved update time
noticePeriodValueNoNotice length
renewalPeriodUnitNoRenewal unit
liabilityCapAmountNoCap amount
noticeInstructionsNoServing notice
renewalPeriodValueNoRenewal length
financialTotalValueNoTotal value
liabilityCapCurrencyNoCap currency
financialValueCurrencyNoValue currency

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed44 schema fields changed
    • addedInput schema / properties / annualValue / description
      Added value: +"Annual value"
    • changedInput schema / properties / autoRenewing / description
      Previous value: -"Whether the fixed-term contract auto-renews"New value: +"Fixed-term auto-renewal"
    • removedInput schema / properties / categoryId / anyOf
      Removed value: -[
      -  {
      -    "format": "uuid",
      -    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedInput schema / properties / categoryId / description
      Previous value: -"Contract type identifier. Set to null to clear the contract type."New value: +"Type ID; null clears"
    • addedInput schema / properties / categoryId / format
      Added value: +"uuid"
    • addedInput schema / properties / categoryId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedInput schema / properties / customFieldValues / description
      Added value: +"fieldKey to saved values"
    • addedInput schema / properties / description / description
      Added value: +"Description"
    • removedInput schema / properties / endDate / anyOf
      Removed value: -[
      -  {
      -    "format": "date",
      -    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / endDate / description
      Added value: +"End date"
    • addedInput schema / properties / endDate / format
      Added value: +"date"
    • addedInput schema / properties / endDate / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedInput schema / properties / expectedUpdatedAt / description
      Added value: +"Saved update time"
    • addedInput schema / properties / financialSummary
      Added value: +{
      +  "description": "Financial summary",
      +  "maxLength": 2000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / financialTotalValue
      Added value: +{
      +  "description": "Total value",
      +  "maximum": 999999999999.99,
      +  "minimum": 0,
      +  "multipleOf": 0.01,
      +  "type": "number"
      +}
    • addedInput schema / properties / financialValueCurrency
      Added value: +{
      +  "description": "Value currency",
      +  "maxLength": 3,
      +  "minLength": 3,
      +  "pattern": "^[A-Za-z]{3}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / governingLaw
      Added value: +{
      +  "description": "Governing law",
      +  "maxLength": 20000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / id / description
      Added value: +"ID"
    • removedInput schema / properties / id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • addedInput schema / properties / isExclusive
      Added value: +{
      +  "description": "Exclusivity",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / isOpenEnded / description
      Previous value: -"Whether the contract is open-ended. When true, also clears end date, auto-renewal, and renewal period."New value: +"True requires omitting endDate, autoRenewing and renewal settings."
    • addedInput schema / properties / jurisdiction
      Added value: +{
      +  "description": "Jurisdiction",
      +  "maxLength": 20000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / liabilityCapAmount
      Added value: +{
      +  "description": "Cap amount",
      +  "maximum": 999999999999.99,
      +  "minimum": 0,
      +  "multipleOf": 0.01,
      +  "type": "number"
      +}
    • addedInput schema / properties / liabilityCapCurrency
      Added value: +{
      +  "description": "Cap currency",
      +  "maxLength": 3,
      +  "minLength": 3,
      +  "pattern": "^[A-Za-z]{3}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / liabilitySummary
      Added value: +{
      +  "description": "Liability summary",
      +  "maxLength": 20000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / notes / description
      Added value: +"Notes"
    • addedInput schema / properties / noticeInstructions
      Added value: +{
      +  "description": "Serving notice",
      +  "maxLength": 20000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / noticePeriodUnit
      Added value: +{
      +  "description": "Notice unit",
      +  "enum": [
      +    "days",
      +    "weeks",
      +    "months",
      +    "quarters",
      +    "years"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / noticePeriodValue
      Added value: +{
      +  "description": "Notice length",
      +  "exclusiveMinimum": 0,
      +  "maximum": 2147483647,
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / parties / description
      Added value: +"List-parties IDs, not guessed; A/B primary, third_party not; supplied roles replace, others stay"
    • removedInput schema / properties / parties / items / properties / counterpartyId / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • addedInput schema / properties / renewalPeriodUnit / description
      Added value: +"Renewal unit"
    • removedInput schema / properties / renewalPeriodValue / anyOf
      Removed value: -[
      -  {
      -    "exclusiveMinimum": 0,
      -    "maximum": 2147483647,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / renewalPeriodValue / description
      Added value: +"Renewal length"
    • addedInput schema / properties / renewalPeriodValue / exclusiveMinimum
      Added value: +0
    • addedInput schema / properties / renewalPeriodValue / maximum
      Added value: +2147483647
    • addedInput schema / properties / renewalPeriodValue / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • addedInput schema / properties / reviewStatus / description
      Added value: +"Review status"
    • addedInput schema / properties / startDate / description
      Added value: +"Start date"
    • removedInput schema / properties / startDate / pattern
      Removed value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    • addedInput schema / properties / status / description
      Added value: +"Lifecycle status"
    • addedInput schema / properties / title / description
      Added value: +"Title"
    • removedInput schema / properties / title / maxLength
      Removed value: -500
    • changedOutput schema / (root)
      Previous value: -{
      -  "$schema": "http://json-schema.org/draft-07/schema#",
      -  "additionalProperties": false,
      -  "properties": {
      -    "changedFields": {
      -      "description": "Names of the metadata fields changed by this request",
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "id": {
      -      "allOf": [
      -        {
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        {
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        }
      -      ],
      -      "description": "Updated contract UUID",
      -      "type": "string"
      -    },
      -    "updated": {
      -      "description": "Whether this request changed persisted metadata",
      -      "type": "boolean"
      -    }
      -  },
      -  "required": [
      -    "id",
      -    "updated",
      -    "changedFields"
      -  ],
      -  "type": "object"
      -}New value: +null
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds genuinely new behavioral context: optimistic concurrency via expectedUpdatedAt with conflict on stale versions, and downstream side effects on scheduled email notifications and calendar feeds. It could go further on what 'destructive' means here (e.g., whether party roles are replaced wholesale) but the side-effect disclosure is real added value.

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 the mutation semantics and concurrency rule, then the input constraint, then side effects — a sensible ordering with no filler sentences. The closing clause is hedged with two 'may's, which is honest but slightly soft for a definition meant to set expectations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 29-parameter nested mutation with no output schema, the description covers the essentials an agent needs before calling: partial-update semantics, the concurrency token, the minimum-field rule, and side effects. Missing is any statement of what a successful response contains or how partial failures surface, though the annotation set carries most of the safety profile.

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 100%, so baseline is 3; the description earns above that by explaining the meaning of expectedUpdatedAt as a version guard and by framing the field set as supplement-or-omit rather than a full replacement. It adds no detail on the nested parties replacement rule or the null-clearing convention, both of which remain schema-only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Partially update approved contract metadata') and clarifies the PATCH-like semantics via 'partially' and 'using its current version'. It does not name or distinguish itself from the closest siblings, notably clm_bulk_update_contracts or clm_apply_contract_reconciliation, so an agent must infer the single-vs-bulk boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: the contract must be approved, the caller must send at least one field besides id and expectedUpdatedAt, and manual supplementation of extracted values is discouraged. It stops short of naming alternative tools for bulk edits or reconciliation, so routing guidance is incomplete rather than absent.

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.