---
title: "Structured extraction of clauses, obligations and deadlines from legal documents (SaaS contracts, NDAs, employment agree"
method: POST
path: "/api/v1/call/legal_clause_extractor"
tags: ["expertise"]
---

# Structured extraction of clauses, obligations and deadlines from legal documents (SaaS contracts, NDAs, employment agree

`POST /api/v1/call/legal_clause_extractor`

## Request

- Base URL: `https://mcp.gapup.io`
- URL: `https://mcp.gapup.io/api/v1/call/legal_clause_extractor`
- Auth: HTTP bearer

Structured extraction of clauses, obligations and deadlines from legal documents (SaaS contracts, NDAs, employment agreements, loan agreements, leases, M&A deals, IP licences). Complements contract_risk_scanner with granular per-clause output.

ICP: legal ops, M&A lawyers, paralegals, contract managers, compliance officers.

Capabilities:
• Auto-detects document type (7 types) and language (EN/FR/DE/ES/PT)
• Extracts parties with roles (buyer, seller, licensor, employee, etc.)
• Splits document into sections and classifies 16+ clause types
• Per-clause: 20 obligation patterns (EN/FR/DE), 10 deadline patterns, 18 risk detectors
• Document-level: red flags (liability cap, auto-renewal, IP overreach, etc.), missing clauses per doc type
• Global deadline calendar with P0/P1/P2 severity
• Cross-reference map between sections
• Cache: 7 days (legal docs stable once provided)

100% pure compute — no external fetch required. Accepts 10k–100k char documents.

## Request body

- object
  - `document_text` string, required: Full text of the legal document (10k–100k chars typical). Plain text or lightly HTML-formatted. EN/FR/DE/ES/PT supported.
  - `document_type` 'saas_contract' | 'employment' | 'nda' | 'loan_agreement' | 'lease' | 'merger_agreement' | 'licence_ip' | 'other' | 'auto': Optional. Document type hint. Defaults to auto-detection. Use "auto" or omit to let the tool detect from content.
  - `target_clauses` string[]: Optional. Filter extraction to specific clause types. E.g. ["term", "termination", "liability", "ip", "confidentiality", "governing_law", "indemnification"]. If omitted or empty, all clauses are extracted.
  - `lang` string: Optional. Language hint (e.g. 'en', 'fr', 'de'). Defaults to auto-detection.
  - `async` boolean: If true, returns a job_id immediately (<200ms) instead of waiting for the result. Poll the result with job_result(job_id). Use for slow tools to avoid client timeouts.

## Response `200`

Tool result

- object
  - `tool` string
  - `result` object
    - `document_type_detected` string, required
    - `lang_detected` string, required
    - `word_count` number, required
    - `parties_detected` object[], required
      - `role` string, required
      - `name` string, required
    - `effective_date` string
    - `governing_law` string
    - `jurisdiction` string
    - `clauses_extracted` object[], required
      - `type` string, required
      - `title` string
      - `excerpt` string, required
      - `obligations` object[], required
        - `who` string, required
        - `what` string, required
        - `when` string
        - `severity` 'P0' | 'P1' | 'P2', required
      - `deadlines` object[], required
        - `date_or_period` string, required
        - `trigger_event` string
        - `obligation_link` string
      - `risks_detected` string[], required
    - `key_deadlines_global` object[], required
      - `date_or_period` string, required
      - `description` string, required
      - `severity` 'P0' | 'P1' | 'P2', required
    - `red_flags` object[], required
      - `severity` 'P0' | 'P1' | 'P2', required
      - `category` string, required
      - `message` string, required
    - `missing_clauses_expected` string[], required
    - `cross_references` object[], required
      - `from_section` string, required
      - `to_section` string, required
    - `sources` object[], required
      - `name` string, required
      - `url` string, required
      - `status` 'retrieved' | 'partial' | 'unavailable', required
    - `quality_score` number, required
    - `status` 'partial' | 'final' | 'failed', required
  - `request_id` string
  - `source` 'rest-api'
  - `ms` number

## Other responses

- `400`: Invalid arguments
- `401`: Unauthorized
- `402`: Payment Required — pay via x402 (USDC on Base) then retry with X-Payment header
- `404`: Tool not found
- `429`: Rate limited
- `500`: Internal error

---

[API](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api.md) · [All operations](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api/revisions/afb9da3b98f4?raw)
