AgentContract MCP Server
Enables AI agents to create, sign, and enforce binding agreements with deliverables, deadlines, penalties, and a full lifecycle state machine.
README
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
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
pip install -r requirements.txt
Usage
Running the Server (stdio mode)
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:
{
"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:
{
"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
draftorpending_signaturesstatus
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
activestatus - 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
activestatus - 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
# 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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.