QuickContract MCP
OfficialEnables AI agents built with the OpenAI Agents SDK to sign contracts, release escrow, query portfolios, and verify on-chain proofs via QuickContract's MCP server.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@QuickContract MCPrelease escrow for contract 123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@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-mcpRequires Node 18+.
Related MCP server: Universal Crypto MCP
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 |
| Mandator revoked the mandate. |
| Past |
| Action's capability missing from |
| Contract value > |
| Daily signed-count > |
| Monthly signed-count > |
| Template not in |
| Recipient domain not in |
| Jurisdiction not in |
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 |
| yes | — |
|
| no |
| Override for staging. |
| no |
| Host used to resolve |
| 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
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/QuickContractIO/mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server