Capital Company

Launch SPVs and funds, invite investors and send capital calls through Capital Company.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
99%
Naming quality
73%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (8)

  • HIGHTool poisoning patterns detected
  • LOWTool 'capital_company_invite_investors' name length outside 3-30 rangein capital_company_invite_investors
  • LOWTool 'capital_company_send_subscription_agreements' name length outside 3-30 rangein capital_company_send_subscription_agreements
  • LOWTool 'capital_company_send_capital_calls' name length outside 3-30 rangein capital_company_send_capital_calls
  • LOWTool 'capital_company_edit_commitment' name length outside 3-30 rangein capital_company_edit_commitment
  • LOWTool 'capital_company_create_commitment' name length outside 3-30 rangein capital_company_create_commitment
  • LOWTool 'capital_company_show_confirmation' name length outside 3-30 rangein capital_company_show_confirmation
  • LOWTool description contains role marker that could confuse chat modelsin capital_company_create_fund

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,828Tokens (tool definitions)
~1.3 KBTypical response size
Significant attention impact (2.21% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "capital-company": {
      "url": "https://capitalcompany.ai/mcp"
    }
  }
}

Remote endpoints

https://capitalcompany.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡create_workspace(email, fullName, teamName)

Opens a Capital Company workspace for someone who has none: their account and their firm’s team. Needs no sign-in. They then sign in from the link the login page emails them, and connect this assistant to have it set things up.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "description": "The email address the person will sign in with",
      "type": "string"
    },
    "fullName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The person’s full name"
    },
    "teamName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The name of their firm or team, which the workspace is named after"
    }
  },
  "required": [
    "email",
    "fullName",
    "teamName"
  ]
}
🟡capital_company_create_fund(request, team, timeZone)

Starts creating a fund for the user: an SPV or a blind pool, with its legal name, expected allocation, strategy, classes and fees, manager and documents. Capital Company’s assistant asks for what is missing and, when it has everything, puts the fund to the user for confirmation before anything is created.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "What the user asked for, in their own words"
    },
    "team": {
      "description": "The team to act on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "request",
    "timeZone"
  ]
}
⚪capital_company_invite_investors(request, team, timeZone)

Starts inviting investors to one of the user’s funds by email address. The assistant resolves the fund, asks for what is missing, and puts the invitations to the user for confirmation before any is sent.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "What the user asked for, in their own words"
    },
    "team": {
      "description": "The team to act on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "request",
    "timeZone"
  ]
}
🟡capital_company_send_subscription_agreements(request, team, timeZone)

Starts sending subscription agreements for signature to investors of one of the user’s funds. The assistant resolves the fund and the commitments and puts the requests to the user for confirmation before any is sent.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "What the user asked for, in their own words"
    },
    "team": {
      "description": "The team to act on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "request",
    "timeZone"
  ]
}
🟡capital_company_send_capital_calls(request, team, timeZone)

Starts sending capital call notices to the investors of a fund class. The assistant resolves the class and its commitments and puts the notices to the user for confirmation before any is sent. It never moves money.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "What the user asked for, in their own words"
    },
    "team": {
      "description": "The team to act on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "request",
    "timeZone"
  ]
}
🟡capital_company_update_fund(request, team, timeZone)

Starts changing settings of one of the user’s funds: the fields they name, nothing else. The assistant puts the change to the user for confirmation before anything is written.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "What the user asked for, in their own words"
    },
    "team": {
      "description": "The team to act on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "request",
    "timeZone"
  ]
}
🟡capital_company_edit_commitment(request, team, timeZone)

Starts editing an existing commitment in one of the user’s funds: the fields they name. The assistant puts the edit, and anything it changes about sent capital calls, to the user for confirmation before anything is written.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "What the user asked for, in their own words"
    },
    "team": {
      "description": "The team to act on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "request",
    "timeZone"
  ]
}
🟡capital_company_create_commitment(request, team, timeZone)

Starts recording a new commitment by an investor in one of the user’s funds. The assistant resolves the fund and the investor, asks for what is missing, and puts the commitment to the user for confirmation before anything is written.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "What the user asked for, in their own words"
    },
    "team": {
      "description": "The team to act on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "request",
    "timeZone"
  ]
}
🟢capital_company_ask(request, team, timeZone)

Answers a question about the user’s team and funds in Capital Company from its records, in Capital Company’s words. Changes nothing.

Input Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "What the user asked for, in their own words"
    },
    "team": {
      "description": "The team to act on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "request",
    "timeZone"
  ]
}
⚪capital_company_reply(answer, team, timeZone)

Relays the user’s answer to the question Capital Company’s assistant asked last, in their own words, and returns what the assistant says next: another question, or a proposal for the user to confirm.

Input Schema

{
  "type": "object",
  "properties": {
    "answer": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "The user’s answer, in their own words"
    },
    "team": {
      "description": "The team the conversation is on, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "answer",
    "timeZone"
  ]
}
🔴capital_company_confirm(confirmationId, decision, timeZone)

Relays the user’s own answer, confirm or decline, to a Confirmation Capital Company’s assistant put to them. Confirming runs the operation; declining lets the assistant ask what to change.

Input Schema

{
  "type": "object",
  "properties": {
    "confirmationId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "The Confirmation the user was shown, from the link the assistant’s answer carried"
    },
    "decision": {
      "type": "string",
      "enum": [
        "confirm",
        "decline"
      ],
      "description": "What the user said, in so many words"
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "confirmationId",
    "decision",
    "timeZone"
  ]
}
🟢capital_company_show_confirmation(confirmationId)

Shows the user a Confirmation named in Capital Company’s reply on Capital Company’s card, where they confirm or decline it themselves. Changes nothing.

Input Schema

{
  "type": "object",
  "properties": {
    "confirmationId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "The Confirmation Capital Company’s reply named"
    }
  },
  "required": [
    "confirmationId"
  ]
}
⚪capital_company_claim(confirmationId, email, timeZone)

For someone who started without a Capital Company account and said yes to a proposal: emails a link to the address they will sign in with. Opening it verifies the address and creates what they said yes to.

Input Schema

{
  "type": "object",
  "properties": {
    "confirmationId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "The Confirmation the user said yes to"
    },
    "email": {
      "description": "The email address the user will sign in with",
      "type": "string"
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The user’s IANA time zone, such as America/New_York"
    }
  },
  "required": [
    "confirmationId",
    "email",
    "timeZone"
  ]
}
🟢capital_company_conversation(team)

Reads the user’s current conversation with Capital Company’s assistant, including the outcome of anything they confirmed, and whether it is waiting on them.

Input Schema

{
  "type": "object",
  "properties": {
    "team": {
      "description": "The team whose conversation to read, by name, only when the user belongs to more than one team; leave it out otherwise",
      "type": "string",
      "minLength": 1
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools