Skip to main content

OpenCap Stack MCP Server

The @opencapstack/mcp-server gives any MCP-compatible AI agent direct access to your cap table — no REST calls, no boilerplate. Ask Claude to "show me the cap table" or "issue 50,000 options to Jane Doe" and it happens.

npm install -g @opencapstack/mcp-server

29 tools covering stakeholders, equity, SAFEs, valuations, documents, and analytics.


Setup

Claude Code

Add to ~/.claude.json (global) or .claude/settings.json (project):

{
"mcpServers": {
"opencap": {
"command": "npx",
"args": ["-y", "@opencapstack/mcp-server"],
"env": {
"OPENCAP_API_KEY": "your-api-key",
"OPENCAP_BASE_URL": "https://api.opencapstack.com/api/v1"
}
}
}
}
Base URL

Include /api/v1 in OPENCAP_BASE_URL. Without it all requests will 404.

Cursor

Add to .cursor/mcp.json in your project root:

{
"mcpServers": {
"opencap": {
"command": "npx",
"args": ["-y", "@opencapstack/mcp-server"],
"env": {
"OPENCAP_API_KEY": "your-api-key",
"OPENCAP_BASE_URL": "https://api.opencapstack.com/api/v1"
}
}
}
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
"mcpServers": {
"opencap": {
"command": "npx",
"args": ["-y", "@opencapstack/mcp-server"],
"env": {
"OPENCAP_API_KEY": "your-api-key",
"OPENCAP_BASE_URL": "https://api.opencapstack.com/api/v1"
}
}
}
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
"mcpServers": {
"opencap": {
"command": "npx",
"args": ["-y", "@opencapstack/mcp-server"],
"env": {
"OPENCAP_API_KEY": "your-api-key",
"OPENCAP_BASE_URL": "https://api.opencapstack.com/api/v1"
}
}
}
}

Getting Your API Key

Option A — Agent onboarding (zero human steps):

curl -X POST https://api.opencapstack.com/api/v1/agents/onboard \
-H "Content-Type: application/json" \
-d '{
"agent_id": "claude-mcp",
"agent_name": "Claude MCP Agent",
"capabilities": ["read:cap-table", "write:equity", "read:financials"]
}'

Copy the api_key from the response and use it as OPENCAP_API_KEY.

Option B — Login and use the JWT:

curl -X POST https://api.opencapstack.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"yourpassword"}'

All 29 Tools

Stakeholders (5 tools)

ToolDescription
list_stakeholdersList all stakeholders with ownership percentages
get_stakeholderGet a specific stakeholder by ID
create_stakeholderAdd a new stakeholder (founder, investor, employee, advisor)
update_stakeholderUpdate stakeholder details
delete_stakeholderRemove a stakeholder

Share Classes (4 tools)

ToolDescription
list_share_classesList all share classes
get_share_classGet a specific share class
create_share_classCreate a new share class (common, preferred, options pool)
update_share_classUpdate share class terms

Equity Grants (4 tools)

ToolDescription
list_equity_grantsList all equity grants
get_equity_grantGet a grant with vesting schedule
create_equity_grantIssue options, RSUs, or warrants
update_equity_grantUpdate grant status or vesting

SAFE Notes (3 tools)

ToolDescription
list_safesList all SAFE instruments
get_safeGet a SAFE by ID
create_safeCreate a new SAFE note

Cap Table (4 tools)

ToolDescription
cap_table_summaryFull ownership breakdown by share class and stakeholder
get_fully_diluted_sharesTotal share count including all options and warrants
calculate_dilutionModel ownership impact of a new fundraising round
run_waterfall_analysisLiquidation waterfall for an exit scenario

Valuations (3 tools)

ToolDescription
get_latest_valuationMost recent 409A valuation
get_valuation_historyHistorical valuation timeline
create_valuation_requestTrigger a new 409A valuation

Documents (2 tools)

ToolDescription
list_documentsList documents with filtering
get_documentGet document metadata and download URL

Financial Reports (2 tools)

ToolDescription
list_financial_reportsList generated reports
create_financial_reportGenerate investor report, cap table summary, or equity ledger

Workflows (2 tools)

ToolDescription
list_workflowsList pending approval workflows
whoamiGet current authenticated user and company context

Example Conversations

Check ownership

You: What does the cap table look like?

Claude: Let me pull that up.
[calls cap_table_summary]

Here's the current cap table:
- Total issued shares: 12,500,000
- Jane Doe (Founder): 5,000,000 shares — 40%
- Acme Ventures (Series A): 4,500,000 shares — 36%
- Options Pool: 3,000,000 shares — 24%

Issue equity

You: Issue 50,000 options to the new engineer, Alex Kim
(alex@startup.com), standard 4-year cliff vesting,
$0.10 strike price.

Claude: I'll create Alex as a stakeholder and issue the grant.
[calls create_stakeholder]
[calls create_equity_grant]

Done. Alex Kim has been added and granted 50,000 options
(Grant #GRANT-AK50000-2026) with a 4-year vest, 1-year cliff,
at $0.10 strike. Vesting starts today.

Model a fundraising round

You: If we raise a $5M Series B at a $20M pre-money,
what happens to everyone's ownership?

Claude: Running dilution analysis...
[calls calculate_dilution]

Series B dilution impact:
- New shares issued: 2,500,000
- Post-money fully diluted: 16,500,000

After dilution:
- Jane Doe: 40% → 30.3%
- Acme Ventures: 36% → 27.3%
- Series B investors: 0% → 15.2%
- Options Pool: 24% → 18.2% (undiluted)

Run waterfall analysis

You: Model an exit at $30M. Who gets what?

Claude: Running liquidation waterfall...
[calls run_waterfall_analysis]

$30M exit waterfall:
1. Series A 1x liquidation preference: $4.5M → Acme Ventures
2. Remaining $25.5M distributed pro-rata:
- Jane Doe (40%): $10.2M
- Acme Ventures (36%): $9.2M
- Options Pool (24%): $6.1M
Total proceeds: Founders $10.2M, Series A $13.7M

AINative + OpenCap Stack (Combined Setup)

If you use both AINative ZeroDB and OpenCap Stack, configure both MCP servers together:

{
"mcpServers": {
"zerodb": {
"command": "python",
"args": ["-m", "zerodb_mcp"],
"env": {
"ZERODB_API_KEY": "your-zerodb-key",
"ZERODB_PROJECT_ID": "your-project-id"
}
},
"opencap": {
"command": "npx",
"args": ["-y", "@opencapstack/mcp-server"],
"env": {
"OPENCAP_API_KEY": "your-opencap-key",
"OPENCAP_BASE_URL": "https://api.opencapstack.com/api/v1"
}
}
}
}

Now Claude can store memory in ZeroDB and manage your cap table in the same conversation.


Self-Hosted MCP

If you're running OpenCap Stack on your own infrastructure, point the server at your instance:

{
"env": {
"OPENCAP_API_KEY": "your-api-key",
"OPENCAP_BASE_URL": "https://your-opencapstack.company.com/api/v1"
}
}

See the Self-Hosting guide for deployment instructions.