QuickContract MCP
Enables AI agents to sign contracts, release escrow, query portfolios, and verify on-chain proofs via QuickContract.
README
@quickcontract/mcp
MCP server for QuickContract — sign contracts, release escrow, query portfolios, and verify on-chain proofs from any MCP-aware AI agent.
Drops into Claude Desktop, Cursor, Anthropic Agents SDK, and OpenAI Agents in under a minute.
Install
npx @quickcontract/mcp --help
# or install globally:
npm i -g @quickcontract/mcp
quickcontract-mcp
Requires Node 18+.
Configure
Generate an API key at https://quickcontract.io/settings/api-keys.
Raw org keys start with qc_live_; agent-bound keys (with a server-
enforced mandate) start with qc_agnt_.
Set the env var:
export QC_API_KEY="qc_live_..." # or qc_agnt_...
That's it. The server defaults to https://api.quickcontract.io.
Override with QC_BASE_URL for staging or local dev.
Wire it into your AI client
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"quickcontract": {
"command": "npx",
"args": ["-y", "@quickcontract/mcp"],
"env": {
"QC_API_KEY": "qc_live_..."
}
}
}
}
Restart Claude Desktop. Type @quickcontract in any conversation to
invoke tools.
Cursor
In .cursor/mcp.json at the workspace root:
{
"mcpServers": {
"quickcontract": {
"command": "npx",
"args": ["-y", "@quickcontract/mcp"],
"env": { "QC_API_KEY": "qc_live_..." }
}
}
}
Anthropic Agents SDK (TypeScript)
import { Agent } from '@anthropic-ai/sdk/agents';
import { StdioMcpTransport } from '@anthropic-ai/sdk/mcp';
const agent = new Agent({
mcpServers: {
quickcontract: new StdioMcpTransport({
command: 'npx',
args: ['-y', '@quickcontract/mcp'],
env: { QC_API_KEY: process.env.QC_API_KEY! },
}),
},
});
OpenAI Agents SDK (Python)
from openai.agents import Agent, MCPServerStdio
qc = MCPServerStdio(
name="quickcontract",
command="npx",
args=["-y", "@quickcontract/mcp"],
env={"QC_API_KEY": os.environ["QC_API_KEY"]},
)
agent = Agent(name="contract-agent", mcp_servers=[qc])
What's exposed
Tools — READ (works with any API key)
list_contracts— paginated list with filters.get_contract— full structured contract.get_contract_status— lightweight status / signed-party flags.verify_hash— public verify by SHA-256 content hash; includessignedBy[]with agent DIDs for external Ed25519 verification.list_templates/get_template— 62 base templates + your custom.get_organization— your plan tier + rate limit.get_audit_log— tamper-evident hash-chained events.get_obligations— extracted payment terms + dates via Claude.
Tools — WRITE (mandate-gated for agent keys)
create_contract— instantiate a draft from a template. Agent callers: template must be inmandate.limits.allowedTemplateIds.update_contract— edit a draft.send_contract— move draft → sent_for_review. Agent callers: recipient domain must be inallowedCounterpartyDomains.add_recipient— register a human (kind=human) or agent (kind=agent) recipient.sign_as_agent— produce an Ed25519 signature on a contract. Requires aqc_agnt_*key. Server enforces capability + the full 9-code mandate envelope.release_milestone— release escrow. Non-custodial in both rails.add_machine_term— attach an IF/THEN to a contract (when payload.delivered + schemaMatch then escrow.release).report_event— fire a signed event into a contract's machine terms. Optional Ed25519 signature provides non-repudiation.
Resources
contract://{id-or-permalink}— full contract.template://{id}— template body.audit://{contractId}— hash-chained log.agent://{didIdentifier}— public DID Document JSON-LD.
Prompts
negotiate_clause,draft_counter_offer,risk_assessment,summarize_contract,extract_obligations— pre-canned scripts that chain the AI tools.
Mandate reject codes
When an agent attempts an action that violates its mandate, the
backend returns a typed envelope. The MCP tool surfaces it as a
single error string with reason: line:
| Reason | Trigger |
|---|---|
mandate_revoked |
Mandator revoked the mandate. |
mandate_expired |
Past expiresAt. |
capability_not_granted |
Action's capability missing from capabilities[]. |
mandate_exceeded_value_cap |
Contract value > maxContractValueCents. |
mandate_exceeded_day_cap |
Daily signed-count > perDayCap. |
mandate_exceeded_month_cap |
Monthly signed-count > perMonthCap. |
template_not_allowed |
Template not in allowedTemplateIds[]. |
counterparty_not_allowed |
Recipient domain not in allowedCounterpartyDomains[]. |
jurisdiction_not_allowed |
Jurisdiction not in allowedJurisdictions[]. |
A calling agent can switch on reason to plan an alternative path
(e.g. propose a smaller contract value, or hand off to a human via
request_approval).
Environment variables
| Var | Required | Default | Notes |
|---|---|---|---|
QC_API_KEY |
yes | — | qc_live_* for org or qc_agnt_* for agent. |
QC_BASE_URL |
no | https://api.quickcontract.io |
Override for staging. |
QC_PUBLIC_HOST |
no | quickcontract.io |
Host used to resolve agent:// DID URIs. |
QC_DEBUG |
no | — | Set to any truthy value to stream request log to stderr. |
License
MIT — see LICENSE.
Links
- Home: https://quickcontract.io
- Developer docs: https://quickcontract.io/developers
- Agent identity spec: https://quickcontract.io/developers/agents
- Public verify (no API key):
https://api.quickcontract.io/api/v1/verify/{contentHash} - Status: https://status.quickcontract.io
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.