API V2 + MCP

Documentación API

Genera, firma y gestiona contratos legales programáticamente. API REST para cualquier stack y servidor MCP para agentes de IA.

Genera contratos

Crea contratos legales para 16 jurisdicciones con una sola llamada a la API.

IA integrada

Genera contratos desde descripciones en lenguaje natural con nuestro endpoint de IA.

Firma electrónica

Envía contratos para firma electrónica directamente desde la API.

16 países

Contratos adaptados a la legislación de México, Colombia, Argentina, Chile, España y más.

MCP nativo

Servidor MCP para integrar con agentes de IA compatibles con Model Context Protocol.

Sandbox incluido

Entorno de pruebas completo con API keys de test. Sin límites, sin costo.

Autenticación

La API usa API keys para autenticación. Incluye tu key en el headerAuthorizationde cada request.

Cómo obtener tu API key

  1. 1. Crea una cuenta en tucontrato.com
  2. 2. Ve a Configuración → API y desarrolladores
  3. 3. Genera una nueva API key
HTTP Header
Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxx
Production

Prefijo tc_live_ — contratos reales con validez legal

Sandbox

Prefijo tc_test_ — pruebas sin límites, sin costo

Endpoints

Base URL: https://tucontrato.com/api/v2

MétodoEndpoint
POST/api/v2/contracts
POST/api/v2/contracts/generate
GET/api/v2/contracts
GET/api/v2/contracts/:id
PATCH/api/v2/contracts/:id
DELETE/api/v2/contracts/:id
POST/api/v2/contracts/:id/sign
GET/api/v2/contracts/:id/pdf
GET/api/v2/contract-types
GET/api/v2/countries

Todas las respuestas siguen el formato: { data, error, meta }

Quickstart

Ejemplos para crear tu primer contrato en cada lenguaje.

curl

bash
curl -X POST https://tucontrato.com/api/v2/contracts \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "arrendamiento",
    "country": "MX",
    "parties": {
      "landlord": {
        "name": "María García López",
        "id_number": "GALM850101HDFRRL09",
        "email": "maria@ejemplo.com"
      },
      "tenant": {
        "name": "Carlos Rodríguez Pérez",
        "id_number": "ROPC900215HMCDRR05",
        "email": "carlos@ejemplo.com"
      }
    },
    "terms": {
      "property_address": "Av. Reforma 222, CDMX",
      "monthly_rent": 15000,
      "currency": "MXN",
      "duration_months": 12,
      "deposit_months": 1,
      "start_date": "2026-05-01"
    }
  }'

JavaScript / TypeScript

javascript
const response = await fetch('https://tucontrato.com/api/v2/contracts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer tc_live_xxxxxxxxxxxxxxxxxxxx',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    type: 'servicios',
    country: 'CO',
    parties: {
      provider: {
        name: 'Ana Torres',
        id_number: '1234567890',
        email: 'ana@ejemplo.com',
      },
      client: {
        name: 'Tech Corp SAS',
        id_number: '900123456-7',
        email: 'legal@techcorp.co',
      },
    },
    terms: {
      service_description: 'Desarrollo de aplicación web',
      fee: 5000000,
      currency: 'COP',
      duration_months: 3,
      payment_schedule: 'monthly',
    },
  }),
});

const { data, error } = await response.json();
console.log(data.id, data.preview_url);

Python

python
import requests

response = requests.post(
    "https://tucontrato.com/api/v2/contracts/generate",
    headers={
        "Authorization": "Bearer tc_live_xxxxxxxxxxxxxxxxxxxx",
        "Content-Type": "application/json",
    },
    json={
        "prompt": "Necesito un NDA bilateral entre mi empresa "
                  "y un proveedor de software en Chile",
        "country": "CL",
    },
)

result = response.json()
contract = result["data"]

print(f"Contract ID: {contract['id']}")
print(f"Preview: {contract['preview_url']}")

# Send for signature
sign_response = requests.post(
    f"https://tucontrato.com/api/v2/contracts/{contract['id']}/sign",
    headers={
        "Authorization": "Bearer tc_live_xxxxxxxxxxxxxxxxxxxx",
        "Content-Type": "application/json",
    },
    json={
        "signers": [
            {"email": "ceo@miempresa.cl", "role": "party_a"},
            {"email": "contacto@proveedor.cl", "role": "party_b"},
        ]
    },
)

print(sign_response.json())

Servidor MCP

Model Context Protocol

El servidor MCP permite que agentes de IA (Claude, ChatGPT, LangChain y otros) descubran e invoquen herramientas de TuContrato directamente, sin código intermedio.

Configuración

JSON (MCP config)
{
  "mcpServers": {
    "tucontrato": {
      "url": "https://tucontrato.com/mcp",
      "headers": {
        "Authorization": "Bearer tc_live_xxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

Herramientas disponibles

ToolParams
create_contracttype, country, parties, terms
generate_contract_from_descriptionprompt, country (optional)
list_contractsstatus?, type?, limit?, offset?
get_contractcontract_id
update_contractcontract_id, updates
send_for_signaturecontract_id, signers[]
get_contract_typescountry?
get_supported_countries(none)

Ejemplo: agente de IA crea un contrato

  1. 1. El usuario le dice al agente: “Necesito un NDA para Colombia”
  2. 2. El agente invoca get_contract_types con country: "CO"
  3. 3. El agente recopila los datos necesarios del usuario
  4. 4. Invoca create_contract con los parámetros
  5. 5. Retorna al usuario el enlace de preview y opción de firma

Límites y errores

Rate limits

PlanReq/minReq/día
Gratis10100
Pro605,000
Sandbox301,000

Códigos HTTP

CódigoSignificado
200OK
201Created
400Bad Request
401Unauthorized
403Forbidden (plan)
404Not Found
429Rate Limited
500Server Error

Formato de error

JSON
{
  "data": null,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "El campo 'country' es requerido"
  },
  "meta": {
    "request_id": "req_abc123",
    "timestamp": "2026-04-07T12:00:00Z"
  }
}

Empieza a integrar hoy

Crea tu cuenta, genera una API key y lanza tu primer contrato en minutos. El sandbox es gratuito y sin límites de plan.