AgentContract MCP Server
by Rumblingb
README.md
# AgentContract MCP Server
**Smart contracts between AI agents.** A Model Context Protocol (MCP) server for creating, managing, and enforcing binding agreements between AI agents with formal deliverables, deadlines, penalties, and a full lifecycle state machine.
## Pricing
**$19/month** β [Subscribe via Stripe](https://buy.stripe.com/dRm6oJ4Hd2Jugek0wz1oI0m)
## Features
- π€ **Create contracts** between two agents with deliverables, deadlines, payment, and milestones
- βοΈ **Sign contracts** β both parties must sign to activate
- π **Full contract lifecycle**: draft β pending_signatures β active β completed / breached / terminated
- π **Propose amendments** to active contracts
- π¨ **Report breaches** with full audit trail
- π **Query contracts** and inspect status history
- πΎ **Persistent storage** β all contracts stored as JSON in `~/.agentcontracts/`
## Installation
```bash
pip install -r requirements.txt
```
## Usage
### Running the Server (stdio mode)
```bash
python server.py
```
The server communicates via **STDIO transport** and is designed to be launched by an MCP client (e.g., Claude Desktop, VS Code, or any MCP-compatible host).
### MCP Client Configuration
Add to your MCP client config:
```json
{
"mcpServers": {
"agent-contract": {
"command": "python",
"args": ["/path/to/agent-contract-mcp/server.py"]
}
}
}
```
## Tools
### 1. `contract_create`
Create a new binding agreement between two agents.
**Parameters:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `parties` | `[string, string]` | β
| Two agent IDs |
| `terms.deliverables` | `[string]` | β
| List of deliverables |
| `terms.deadline` | `string` (ISO 8601) | β
| Delivery deadline |
| `terms.payment_amount` | `number` | β
| Payment amount |
| `terms.milestones` | `[string]` | β | Optional milestones |
| `penalties.late_penalty` | `number` | β
| Late delivery penalty |
| `penalties.failure_penalty` | `number` | β
| Failure penalty |
**Example:**
```json
{
"parties": ["agent-alpha", "agent-beta"],
"terms": {
"deliverables": ["Research report on Q2 market trends", "Executive summary"],
"deadline": "2026-06-01T00:00:00Z",
"payment_amount": 5000,
"milestones": ["Draft by May 15", "Final by June 1"]
},
"penalties": {
"late_penalty": 100,
"failure_penalty": 2500
}
}
```
**Returns:** `contract_id`, `status: "draft"`
---
### 2. `contract_get`
Retrieve the full contract with all terms, signatures, amendments, and status history.
**Parameters:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `contract_id` | `string` | β
| UUID of the contract |
**Returns:** Complete contract object.
---
### 3. `contract_sign`
Sign a contract on behalf of an agent. The contract transitions through the lifecycle:
- **1st signature**: `draft` β `pending_signatures`
- **2nd signature**: `pending_signatures` β `active`
**Parameters:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `contract_id` | `string` | β
| UUID of the contract |
| `agent_id` | `string` | β
| Agent performing the signature |
**Constraints:**
- Agent must be a party to the contract
- Each agent can sign only once
- Contract must be in `draft` or `pending_signatures` status
---
### 4. `contract_amend`
Propose an amendment to an active contract. Amendments are recorded but do not automatically modify the original terms.
**Parameters:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `contract_id` | `string` | β
| UUID of the contract |
| `proposing_agent` | `string` | β
| Agent proposing the change |
| `changes` | `object` | β
| Amendment details |
| `changes.description` | `string` | β
| Description of changes |
| `changes.modified_terms` | `object` | β | Modified term values |
| `changes.modified_penalties` | `object` | β | Modified penalty values |
**Constraints:**
- Contract must be in `active` status
- Proposing agent must be a party to the contract
---
### 5. `contract_status`
Get the current lifecycle status of a contract with full history.
**Parameters:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `contract_id` | `string` | β
| UUID of the contract |
**Returns:** Status, human-readable description, parties, signatures, amendment count, breach record, and full status history timeline.
---
### 6. `contract_report_breach`
Report a breach of contract. Transitions status from `active` to `breached`.
**Parameters:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `contract_id` | `string` | β
| UUID of the contract |
| `breached_by` | `string` | β
| Agent that breached |
| `details` | `string` | β
| Description of the breach |
**Constraints:**
- Contract must be in `active` status
- Breached agent must be a party to the contract
## Contract Lifecycle
```
ββββββββββββ
β draft β
βββββββ¬ββββββ
β 1st signature
βββββββΌβββββββββββ
β pending_signaturesβ
βββββββ¬βββββββββββ
β 2nd signature
βββββββΌβββββ
β active β
ββββ¬ββββ¬ββββ
β β
ββββββββββββ ββββββββββββ
βΌ βΌ
ββββββββββββ ββββββββββββ
β completedβ β breached β
ββββββββββββ ββββββββββββ
Any non-terminated state can transition to:
βββββββββββββ
β terminatedβ
βββββββββββββ
```
## Storage
All contracts are stored as individual JSON files in `~/.agentcontracts/`.
```
~/.agentcontracts/
βββ <contract-uuid-1>.json
βββ <contract-uuid-2>.json
βββ ...
```
Each file contains the complete contract state including terms, signatures, amendments, breach records, and full status history.
## Development
```bash
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install dependencies
pip install -r requirements.txt
# Run the server
python server.py
```
## License
MIT
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues