Skip to main content
Glama

Synthex Forge — x402 Paid Agent Services

Extract Contract Terms

extract_contract_terms
Destructive

The obligations in a contract as structured, dated data. use it rather than extract_invoice_fields for contract terms, not invoice fields; an object with 53 fields including DISTRIBUTION, EMPLOYMENT. $1.5 USDC.

Input Schema

NameRequiredDescriptionDefault
as_ofNoThe date the answer is computed as of (YYYY-MM-DD). Defaults to today. Use it to reproduce a past answer exactly.
document_b64NoThe document, base64-encoded, when the text is not available.
jurisdictionNoThe jurisdiction the answer applies to. Accepts an ISO-3166 alpha-2 code or a country name.
document_textNoThe document text to read.
document_typeNoThe kind of document.

Output Schema

NameRequiredDescriptionDefault
idNoThe `id` field of the response.
MSANoThe `MSA` field of the response.
NDANoThe `NDA` field of the response.
SaaSNoThe `SaaS` field of the response.
asOfNoThe `asOf` field of the response.
gapsNoThe `gaps` field of the response.
kindNoThe `kind` field of the response.
nameNoThe `name` field of the response.
noteNoA note on how the answer was produced.
roleNoThe `role` field of the response.
termNoThe `term` field of the response.
LEASENoThe `LEASE` field of the response.
as_ofNoThe date the answer is computed as of.
charsNoThe `chars` field of the response.
countNoThe `count` field of the response.
orderNoThe `order` field of the response.
SUPPLYNoThe `SUPPLY` field of the response.
checksNoThe individual checks that were run.
clauseNoThe `clause` field of the response.
detailYesHuman-readable explanation of the verdict.
expiryNoThe `expiry` field of the response.
sha256NoThe `sha256` field of the response.
sourceNoThe `source` field of the response.
statusNoThe status of the operation.
partiesNoThe `parties` field of the response.
coverageNoHow much of the underlying corpus the answer is based on.
signedByNoThe `signedBy` field of the response.
effectiveNoThe `effective` field of the response.
liabilityNoThe `liability` field of the response.
signed_atNoThe `signed_at` field of the response.
stored_atNoThe `stored_at` field of the response.
EMPLOYMENTNoThe `EMPLOYMENT` field of the response.
commercialNoThe `commercial` field of the response.
ed25519SigNoThe `ed25519Sig` field of the response.
extract_idNoThe `extract_id` field of the response.
ambiguitiesNoThe `ambiguities` field of the response.
terminationNoThe `termination` field of the response.
DISTRIBUTIONNoThe `DISTRIBUTION` field of the response.
documentTypeNoThe `documentType` field of the response.
evidenceCoreNoThe `evidenceCore` field of the response.
jurisdictionNoThe `jurisdiction` field of the response.
document_typeNoThe `document_type` field of the response.
governing_lawNoThe `governing_law` field of the response.
documentDigestNoThe `documentDigest` field of the response.
document_charsNoThe `document_chars` field of the response.
groups_locatedNoThe `groups_located` field of the response.
profileVersionNoVersion of the answer profile.
why_unresolvedNoThe `why_unresolved` field of the response.
document_digestNoThe `document_digest` field of the response.
groups_searchedNoThe `groups_searched` field of the response.
profile_versionNoVersion of the answer profile.
SERVICE_AGREEMENTNoThe `SERVICE_AGREEMENT` field of the response.
groups_not_locatedNoThe `groups_not_located` field of the response.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed54 schema fields changed
    • addedOutput schema / properties / DISTRIBUTION
      Added value: +{
      +  "description": "The `DISTRIBUTION` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / EMPLOYMENT
      Added value: +{
      +  "description": "The `EMPLOYMENT` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / LEASE
      Added value: +{
      +  "description": "The `LEASE` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / MSA
      Added value: +{
      +  "description": "The `MSA` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / NDA
      Added value: +{
      +  "description": "The `NDA` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / SERVICE_AGREEMENT
      Added value: +{
      +  "description": "The `SERVICE_AGREEMENT` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / SUPPLY
      Added value: +{
      +  "description": "The `SUPPLY` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / SaaS
      Added value: +{
      +  "description": "The `SaaS` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / ambiguities
      Added value: +{
      +  "description": "The `ambiguities` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / asOf
      Added value: +{
      +  "description": "The `asOf` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / as_of
      Added value: +{
      +  "description": "The date the answer is computed as of.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / chars
      Added value: +{
      +  "description": "The `chars` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / checks
      Added value: +{
      +  "description": "The individual checks that were run.",
      +  "items": {
      +    "description": "One record.",
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / clause
      Added value: +{
      +  "description": "The `clause` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / commercial
      Added value: +{
      +  "description": "The `commercial` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / count
      Added value: +{
      +  "description": "The `count` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / coverage
      Added value: +{
      +  "description": "How much of the underlying corpus the answer is based on.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / detail
      Added value: +{
      +  "description": "Human-readable explanation of the verdict.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / documentDigest
      Added value: +{
      +  "description": "The `documentDigest` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / documentType
      Added value: +{
      +  "description": "The `documentType` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / document_chars
      Added value: +{
      +  "description": "The `document_chars` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / document_digest
      Added value: +{
      +  "description": "The `document_digest` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / document_type
      Added value: +{
      +  "description": "The `document_type` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / ed25519Sig
      Added value: +{
      +  "description": "The `ed25519Sig` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / effective
      Added value: +{
      +  "description": "The `effective` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / evidenceCore
      Added value: +{
      +  "description": "The `evidenceCore` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / expiry
      Added value: +{
      +  "description": "The `expiry` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / extract_id
      Added value: +{
      +  "description": "The `extract_id` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / gaps
      Added value: +{
      +  "description": "The `gaps` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / governing_law
      Added value: +{
      +  "description": "The `governing_law` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / groups_located
      Added value: +{
      +  "description": "The `groups_located` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / groups_not_located
      Added value: +{
      +  "description": "The `groups_not_located` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / groups_searched
      Added value: +{
      +  "description": "The `groups_searched` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / id
      Added value: +{
      +  "description": "The `id` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / jurisdiction
      Added value: +{
      +  "description": "The `jurisdiction` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / kind
      Added value: +{
      +  "description": "The `kind` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / liability
      Added value: +{
      +  "description": "The `liability` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / name
      Added value: +{
      +  "description": "The `name` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "A note on how the answer was produced.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / order
      Added value: +{
      +  "description": "The `order` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / parties
      Added value: +{
      +  "description": "The `parties` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / profileVersion
      Added value: +{
      +  "description": "Version of the answer profile.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / profile_version
      Added value: +{
      +  "description": "Version of the answer profile.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / role
      Added value: +{
      +  "description": "The `role` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / sha256
      Added value: +{
      +  "description": "The `sha256` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / signedBy
      Added value: +{
      +  "description": "The `signedBy` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / signed_at
      Added value: +{
      +  "description": "The `signed_at` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / source
      Added value: +{
      +  "description": "The `source` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / status / description
      Added value: +"The status of the operation."
    • addedOutput schema / properties / stored_at
      Added value: +{
      +  "description": "The `stored_at` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / term
      Added value: +{
      +  "description": "The `term` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / termination
      Added value: +{
      +  "description": "The `termination` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / why_unresolved
      Added value: +{
      +  "description": "The `why_unresolved` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / required
      Added value: +[
      +  "detail"
      +]
  2. Added

TDQS

B3.3/5.0
Behavior3/5

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

The description adds one genuinely behavioral fact not present in structured fields: the call costs $1.5 USDC, which matters for an agent deciding whether to invoke it. Beyond that, it is silent. The annotations declare destructiveHint=true and readOnlyHint=false on what reads like an extraction operation, and the description never reconciles that, nor does it state what, if anything, is mutated or what happens when required document inputs are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and the routing rule comes early, which is good. But the middle sentence is punctuated into incoherence, the 53-field enumeration with unattributed uppercase tokens is noise rather than signal, and both the field count and the trailing price are left as dangling fragments.

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?

With only five parameters, full schema coverage, and an output schema that carries the return shape, the definition does not need to re-explain results. The remaining gap is that a paid, destructively-annotated call gets no explanation of what the charge buys or what side effects occur, which the agent cannot learn from the schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters (`as_of`, `document_b64`, `jurisdiction`, `document_text`, `document_type`) are already fully documented with defaults and formats. The description only echoes this via "dated data." Baseline 3 applies when the schema carries the weight and the prose adds nothing further.

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

Purpose3/5

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

The opening sentence, "The obligations in a contract as structured, dated data," is a noun phrase with no verb, so the agent must infer "extract" from the tool name rather than reading it. The named sibling contrast does help isolate it from invoice extraction, but "an object with 53 fields including DISTRIBUTION, EMPLOYMENT" is cryptic and reads more like leaked metadata than a purpose statement.

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?

It explicitly names `extract_invoice_fields` and states the selection rule: use this for contract terms, not invoice fields. That is a real routing instruction. However, other neighbouring extractors (`extract_invoice_text`, `extract_sec_filing`, `convert_document`) are not addressed, and there is no stated pre-condition such as requiring `document_text` or `document_b64` to be supplied.

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.