Model Context Protocol
A hosted MCP server for closing timelines
MCP is the open standard that lets AI agents call external tools without custom glue code. Point any MCP-capable client at Contract10’s endpoint and it gets contract extraction with page citations and deterministic deadline arithmetic as first-class tools, no wrapper to write, no guessed date to trust.
Setup
Add the server
Streamable HTTP transport, JSON-RPC 2.0, one URL, no local process to run.
Endpoint:
https://www.contract10.com/api/mcp
Config snippet for Claude Desktop, Claude Code, Cursor or any client that reads an mcpServers map. The Authorization header is optional for build_closing_timeline, which runs keyless at the anonymous rate limit; the other three tools need a key.
mcp config
{
"mcpServers": {
"contract10": {
"url": "https://www.contract10.com/api/mcp",
"headers": {
"Authorization": "Bearer c10_live_..."
}
}
}
}Tools
What the server exposes
Four tools over the same engine, extraction and transaction store the REST API and the website use.
build_closing_timeline
Compute a real-estate closing timeline from contract dates and contingency periods. Deterministic: no model, no document, same input to same output. Counts calendar or business days, applies US federal holidays, and rolls a weekend or holiday deadline to the next business day (the final walkthrough rolls backward instead, so it cannot land after closing). Every deadline carries its base date, offset, day basis, roll rule and a plain-English derivation. A period you do not supply produces no deadline: nothing is invented. Free, and no API key is needed.
| param | type | req? |
|---|---|---|
| fields | object[] | yes |
| options.day_zero | "acceptance" | "day_after_acceptance" | no |
| options.extra_holidays | string[] | no |
returns { timeline: { acceptance_date, closing_date, deadlines[], warnings[], holidays_in_window[], engine_version } }
extract_contract_dates
Read an executed real-estate purchase contract (PDF) and return the dates and contingency periods it states, each with the page it was read from, a verbatim quote, and a confidence. By default it also returns the computed closing timeline. A period the contract does not state is absent from the result: it is never guessed. Pass file_url, or file_base64 (with file_name), or text. Requires an API key.
| param | type | req? |
|---|---|---|
| file_url | string | no |
| file_base64 | string | no |
| file_name | string | no |
| text | string | no |
| property_address | string | no |
| build_timeline | boolean | no |
returns { transaction_id, meta, fields: ContractField[], timeline?, page_count, engine, confidence }
get_transaction
Fetch one transaction by id: the contract's extracted fields (with page citations) and the deadlines computed from them. Requires an API key.
| param | type | req? |
|---|---|---|
| id | string | yes |
returns { transaction, fields: ContractField[], deadlines: Deadline[] }
list_deadlines
List the deadlines for a transaction. Use upcoming=true to skip the ones already completed, and before=yyyy-mm-dd to ask what is due by a date. Requires an API key.
| param | type | req? |
|---|---|---|
| transaction_id | string | yes |
| upcoming | boolean | no |
| before | string | no |
returns { deadlines: Deadline[] }
build_closing_timeline
tools/call request
POST https://www.contract10.com/api/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "build_closing_timeline",
"arguments": {
"fields": [
{
"key": "acceptance_date",
"value": "2026-08-28"
},
{
"key": "closing_days",
"value": "30"
},
{
"key": "earnest_money_days",
"value": "3"
},
{
"key": "inspection_period_days",
"value": "10"
},
{
"key": "final_walkthrough_days",
"value": "3"
}
]
}
}
}response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"acceptanceDate\":\"2026-08-28\",\"closingDate\":\"2026-09-28\",\"deadlines\":[{\"key\":\"earnest_money\",\"label\":\"Earnest money due\",\"dueDate\":\"2026-09-02\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-28\",\"offsetDays\":3,\"dayBasis\":\"business\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 28, 2026 (acceptance) plus 3 business days = Sep 2, 2026. Deposit must be delivered to escrow.\",\"sourceField\":\"earnest_money_days\",\"sourcePage\":0,\"sourceQuote\":null,\"needsVerify\":false,\"group\":\"money\"},{\"key\":\"inspection\",\"label\":\"Inspection period ends\",\"dueDate\":\"2026-09-08\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-28\",\"offsetDays\":10,\"dayBasis\":\"calendar\",\"rollRule\":\"forward\",\"rolledFrom\":\"2026-09-07\",\"rolledReason\":\"Labor Day\",\"derivation\":\"Aug 28, 2026 (acceptance) plus 10 calendar days = Sep 7, 2026. That is Labor Day, so it moves to Sep 8, 2026. Last day to complete inspections.\",\"sourceField\":\"inspection_period_days\",\"sourcePage\":0,\"sourceQuote\":null,\"needsVerify\":false,\"group\":\"diligence\"},{\"key\":\"final_walkthrough\",\"label\":\"Final walkthrough\",\"dueDate\":\"2026-09-25\",\"baseKey\":\"closing_date\",\"baseDate\":\"2026-09-28\",\"offsetDays\":-3,\"dayBasis\":\"calendar\",\"rollRule\":\"backward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Sep 28, 2026 (closing) minus 3 calendar days = Sep 25, 2026. Buyer's final walkthrough before signing.\",\"sourceField\":\"final_walkthrough_days\",\"sourcePage\":0,\"sourceQuote\":null,\"needsVerify\":false,\"group\":\"closing\"},{\"key\":\"closing\",\"label\":\"Closing\",\"dueDate\":\"2026-09-28\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-28\",\"offsetDays\":30,\"dayBasis\":\"calendar\",\"rollRule\":\"forward\",\"rolledFrom\":\"2026-09-27\",\"rolledReason\":\"a Sunday\",\"derivation\":\"Aug 28, 2026 (acceptance) plus 30 calendar days = Sep 27, 2026. That is a Sunday, so it moves to Sep 28, 2026. Closing / settlement.\",\"sourceField\":\"closing_days\",\"sourcePage\":0,\"sourceQuote\":null,\"needsVerify\":false,\"group\":\"closing\"}],\"warnings\":[],\"holidaysInWindow\":[{\"date\":\"2026-09-07\",\"name\":\"Labor Day\"}],\"engineVersion\":\"1.0.0\"}"
}
]
}
}extract_contract_dates
tools/call request
POST https://www.contract10.com/api/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "extract_contract_dates",
"arguments": {
"file_url": "https://example.com/contracts/142-willow-creek-purchase-agreement.pdf",
"buildTimeline": true
}
}
}response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"transactionId\":\"4f2ac9d1-3b7e-4a90-8e21-6c8f2b9a5d3e\",\"fields\":[{\"key\":\"acceptance_date\",\"label\":\"Acceptance date\",\"unit\":\"date\",\"value\":\"2026-08-03\",\"valueText\":null,\"dayBasis\":null,\"page\":1,\"quote\":\"This Agreement is entered into and becomes effective (\\\"Effective Date\\\") on August 3, 2026.\",\"confidence\":\"high\"},{\"key\":\"closing_date\",\"label\":\"Closing date\",\"unit\":\"date\",\"value\":\"2026-09-02\",\"valueText\":null,\"dayBasis\":null,\"page\":4,\"quote\":\"Closing shall occur on or before September 2, 2026.\",\"confidence\":\"high\"},{\"key\":\"earnest_money_days\",\"label\":\"Earnest money deadline\",\"unit\":\"days\",\"value\":\"3\",\"valueText\":\"3 days\",\"dayBasis\":null,\"page\":2,\"quote\":\"Buyer shall deliver the Earnest Money to Escrow Holder within 3 days after the Effective Date.\",\"confidence\":\"high\"},{\"key\":\"earnest_money_amount\",\"label\":\"Earnest money amount\",\"unit\":\"usd\",\"value\":\"8500\",\"valueText\":\"$8,500.00\",\"dayBasis\":null,\"page\":2,\"quote\":\"Earnest Money: $8,500.00\",\"confidence\":\"high\"},{\"key\":\"inspection_period_days\",\"label\":\"Inspection period\",\"unit\":\"days\",\"value\":\"10\",\"valueText\":\"10 days\",\"dayBasis\":null,\"page\":6,\"quote\":\"Buyer shall have 10 days after the Effective Date within which to complete Buyer's inspections.\",\"confidence\":\"high\"},{\"key\":\"appraisal_days\",\"label\":\"Appraisal contingency\",\"unit\":\"days\",\"value\":\"17\",\"valueText\":\"1[illegible]7\",\"dayBasis\":null,\"page\":9,\"quote\":\"Appraisal Contingency Period: 1[illegible]7 days.\",\"confidence\":\"low\"}],\"timeline\":{\"acceptanceDate\":\"2026-08-03\",\"closingDate\":\"2026-09-02\",\"deadlines\":[{\"key\":\"earnest_money\",\"label\":\"Earnest money due\",\"dueDate\":\"2026-08-06\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":3,\"dayBasis\":\"business\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 3 business days = Aug 6, 2026. Deposit must be delivered to escrow.\",\"sourceField\":\"earnest_money_days\",\"sourcePage\":2,\"sourceQuote\":\"Buyer shall deliver the Earnest Money to Escrow Holder within 3 days after the Effective Date.\",\"needsVerify\":false,\"group\":\"money\"},{\"key\":\"inspection\",\"label\":\"Inspection period ends\",\"dueDate\":\"2026-08-13\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":10,\"dayBasis\":\"calendar\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 10 calendar days = Aug 13, 2026. Last day to complete inspections.\",\"sourceField\":\"inspection_period_days\",\"sourcePage\":6,\"sourceQuote\":\"Buyer shall have 10 days after the Effective Date within which to complete Buyer's inspections.\",\"needsVerify\":false,\"group\":\"diligence\"},{\"key\":\"appraisal\",\"label\":\"Appraisal contingency ends\",\"dueDate\":\"2026-08-20\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":17,\"dayBasis\":\"calendar\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 17 calendar days = Aug 20, 2026. Last day to act on a low appraisal.\",\"sourceField\":\"appraisal_days\",\"sourcePage\":9,\"sourceQuote\":\"Appraisal Contingency Period: 1[illegible]7 days.\",\"needsVerify\":true,\"group\":\"financing\"},{\"key\":\"closing\",\"label\":\"Closing\",\"dueDate\":\"2026-09-02\",\"baseKey\":\"closing_date\",\"baseDate\":\"2026-09-02\",\"offsetDays\":0,\"dayBasis\":\"calendar\",\"rollRule\":\"none\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Stated in the contract as Sep 2, 2026. Not derived from another date.\",\"sourceField\":\"closing_date\",\"sourcePage\":4,\"sourceQuote\":\"Closing shall occur on or before September 2, 2026.\",\"needsVerify\":false,\"group\":\"closing\"}],\"warnings\":[{\"code\":\"low_confidence_field\",\"message\":\"\\\"Appraisal contingency\\\" was read with low confidence from page 9. Confirm it against the contract before relying on appraisal contingency ends.\",\"field\":\"appraisal_days\"}],\"holidaysInWindow\":[],\"engineVersion\":\"1.0.0\"},\"pageCount\":22,\"engine\":\"openrouter\",\"confidence\":0.86}"
}
]
}
}get_transaction
tools/call request
POST https://www.contract10.com/api/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_transaction",
"arguments": {
"transactionId": "4f2ac9d1-3b7e-4a90-8e21-6c8f2b9a5d3e"
}
}
}response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"transaction\":{\"id\":\"4f2ac9d1-3b7e-4a90-8e21-6c8f2b9a5d3e\",\"source\":\"api\",\"status\":\"completed\",\"needsReview\":true,\"propertyAddress\":\"142 Willow Creek Dr, Austin, TX 78745\",\"transactionType\":\"purchase\",\"stateCode\":\"TX\",\"contractName\":\"TREC 20\",\"buyerRef\":\"J. Alvarez\",\"sellerRef\":\"M. Chen\",\"acceptanceDate\":\"2026-08-03\",\"closingDate\":\"2026-09-02\",\"archived\":false,\"fileName\":\"142-willow-creek-purchase-agreement.pdf\",\"fileSize\":1834213,\"pageCount\":22,\"fieldCount\":6,\"deadlineCount\":4,\"confidence\":0.86,\"engine\":\"openrouter\",\"engineVersion\":\"1.0.0\",\"createdAt\":\"2026-08-04T15:12:03Z\",\"updatedAt\":\"2026-08-04T15:12:07Z\",\"completedAt\":\"2026-08-04T15:12:07Z\"},\"fields\":[{\"key\":\"acceptance_date\",\"label\":\"Acceptance date\",\"unit\":\"date\",\"value\":\"2026-08-03\",\"valueText\":null,\"dayBasis\":null,\"page\":1,\"quote\":\"This Agreement is entered into and becomes effective (\\\"Effective Date\\\") on August 3, 2026.\",\"confidence\":\"high\"},{\"key\":\"closing_date\",\"label\":\"Closing date\",\"unit\":\"date\",\"value\":\"2026-09-02\",\"valueText\":null,\"dayBasis\":null,\"page\":4,\"quote\":\"Closing shall occur on or before September 2, 2026.\",\"confidence\":\"high\"},{\"key\":\"earnest_money_days\",\"label\":\"Earnest money deadline\",\"unit\":\"days\",\"value\":\"3\",\"valueText\":\"3 days\",\"dayBasis\":null,\"page\":2,\"quote\":\"Buyer shall deliver the Earnest Money to Escrow Holder within 3 days after the Effective Date.\",\"confidence\":\"high\"},{\"key\":\"earnest_money_amount\",\"label\":\"Earnest money amount\",\"unit\":\"usd\",\"value\":\"8500\",\"valueText\":\"$8,500.00\",\"dayBasis\":null,\"page\":2,\"quote\":\"Earnest Money: $8,500.00\",\"confidence\":\"high\"},{\"key\":\"inspection_period_days\",\"label\":\"Inspection period\",\"unit\":\"days\",\"value\":\"10\",\"valueText\":\"10 days\",\"dayBasis\":null,\"page\":6,\"quote\":\"Buyer shall have 10 days after the Effective Date within which to complete Buyer's inspections.\",\"confidence\":\"high\"},{\"key\":\"appraisal_days\",\"label\":\"Appraisal contingency\",\"unit\":\"days\",\"value\":\"17\",\"valueText\":\"1[illegible]7\",\"dayBasis\":null,\"page\":9,\"quote\":\"Appraisal Contingency Period: 1[illegible]7 days.\",\"confidence\":\"low\"}],\"deadlines\":[{\"key\":\"earnest_money\",\"label\":\"Earnest money due\",\"dueDate\":\"2026-08-06\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":3,\"dayBasis\":\"business\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 3 business days = Aug 6, 2026. Deposit must be delivered to escrow.\",\"sourceField\":\"earnest_money_days\",\"sourcePage\":2,\"sourceQuote\":\"Buyer shall deliver the Earnest Money to Escrow Holder within 3 days after the Effective Date.\",\"needsVerify\":false,\"group\":\"money\"},{\"key\":\"inspection\",\"label\":\"Inspection period ends\",\"dueDate\":\"2026-08-13\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":10,\"dayBasis\":\"calendar\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 10 calendar days = Aug 13, 2026. Last day to complete inspections.\",\"sourceField\":\"inspection_period_days\",\"sourcePage\":6,\"sourceQuote\":\"Buyer shall have 10 days after the Effective Date within which to complete Buyer's inspections.\",\"needsVerify\":false,\"group\":\"diligence\"},{\"key\":\"appraisal\",\"label\":\"Appraisal contingency ends\",\"dueDate\":\"2026-08-20\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":17,\"dayBasis\":\"calendar\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 17 calendar days = Aug 20, 2026. Last day to act on a low appraisal.\",\"sourceField\":\"appraisal_days\",\"sourcePage\":9,\"sourceQuote\":\"Appraisal Contingency Period: 1[illegible]7 days.\",\"needsVerify\":true,\"group\":\"financing\"},{\"key\":\"closing\",\"label\":\"Closing\",\"dueDate\":\"2026-09-02\",\"baseKey\":\"closing_date\",\"baseDate\":\"2026-09-02\",\"offsetDays\":0,\"dayBasis\":\"calendar\",\"rollRule\":\"none\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Stated in the contract as Sep 2, 2026. Not derived from another date.\",\"sourceField\":\"closing_date\",\"sourcePage\":4,\"sourceQuote\":\"Closing shall occur on or before September 2, 2026.\",\"needsVerify\":false,\"group\":\"closing\"}]}"
}
]
}
}list_deadlines
tools/call request
POST https://www.contract10.com/api/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_deadlines",
"arguments": {
"transactionId": "4f2ac9d1-3b7e-4a90-8e21-6c8f2b9a5d3e"
}
}
}response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "[{\"key\":\"earnest_money\",\"label\":\"Earnest money due\",\"dueDate\":\"2026-08-06\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":3,\"dayBasis\":\"business\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 3 business days = Aug 6, 2026. Deposit must be delivered to escrow.\",\"sourceField\":\"earnest_money_days\",\"sourcePage\":2,\"sourceQuote\":\"Buyer shall deliver the Earnest Money to Escrow Holder within 3 days after the Effective Date.\",\"needsVerify\":false,\"group\":\"money\"},{\"key\":\"inspection\",\"label\":\"Inspection period ends\",\"dueDate\":\"2026-08-13\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":10,\"dayBasis\":\"calendar\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 10 calendar days = Aug 13, 2026. Last day to complete inspections.\",\"sourceField\":\"inspection_period_days\",\"sourcePage\":6,\"sourceQuote\":\"Buyer shall have 10 days after the Effective Date within which to complete Buyer's inspections.\",\"needsVerify\":false,\"group\":\"diligence\"},{\"key\":\"appraisal\",\"label\":\"Appraisal contingency ends\",\"dueDate\":\"2026-08-20\",\"baseKey\":\"acceptance_date\",\"baseDate\":\"2026-08-03\",\"offsetDays\":17,\"dayBasis\":\"calendar\",\"rollRule\":\"forward\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Aug 3, 2026 (acceptance) plus 17 calendar days = Aug 20, 2026. Last day to act on a low appraisal.\",\"sourceField\":\"appraisal_days\",\"sourcePage\":9,\"sourceQuote\":\"Appraisal Contingency Period: 1[illegible]7 days.\",\"needsVerify\":true,\"group\":\"financing\"},{\"key\":\"closing\",\"label\":\"Closing\",\"dueDate\":\"2026-09-02\",\"baseKey\":\"closing_date\",\"baseDate\":\"2026-09-02\",\"offsetDays\":0,\"dayBasis\":\"calendar\",\"rollRule\":\"none\",\"rolledFrom\":null,\"rolledReason\":null,\"derivation\":\"Stated in the contract as Sep 2, 2026. Not derived from another date.\",\"sourceField\":\"closing_date\",\"sourcePage\":4,\"sourceQuote\":\"Closing shall occur on or before September 2, 2026.\",\"needsVerify\":false,\"group\":\"closing\"}]"
}
]
}
}Anonymous calls to build_closing_timeline are rate-limited to 4/min and 20/day per IP, enough to try the server from an agent config, not enough to build on. A free c10_test_ key raises every tool to 10/min against the real engine and never bills. Pass Authorization: Bearer <key>(create one in Settings → API keys) for production limits: 60/min and 1,000 calls/mo on Pro, up to 300/min and 10,000/mo on Scale. See pricing for the full table.
Contract10 computes deadlines from the contract you upload. It is not legal advice and it does not replace your broker's review. Automated extraction can misread a poor scan, so every extracted field cites the page it came from and every deadline shows the arithmetic behind it. Confirm against the executed contract before you rely on a date.