The Carta MCP connector routes your AI agent's tool calls to Carta's own MCP server through Scalekit. Each user signs in to Carta once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 18 tools.
- Tools
- 18
- What they doRead · write · destructive
- 13 · 3 · 213 read3 write2 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Carta MCP connection
In AgentKit > Connections, create a Carta MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Carta MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'cartamcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Carta MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'cartamcp_get_current_user',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "cartamcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Carta MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="cartamcp_get_current_user",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolcartamcp_cap_table_chartShow a visual cap table summary with ownership breakdown by share class.Read-onlyCap Table Chart
Show a visual cap table summary with ownership breakdown by share class.
Inputs
corporation_idstringrequired- Carta corporation ID of the company.
as_of_datestring- Date to use for the cap table snapshot in YYYY-MM-DD format.default
company_namestring- Name of the company to look up.default
cartamcp_discoverList available Carta commands or views across all domains.Read-onlyDiscover
List available Carta commands or views across all domains.
Inputs
domainstring- Carta domain to filter commands by (e.g. equity, fund).
scopestring- Scope to filter commands by: read, write, or view.
searchstring- Search term to filter results by name or description.
cartamcp_fetchExecute a named read command against Carta.Read-onlyFetch
Execute a named read command against Carta.
Inputs
commandstringrequired- Fully qualified Carta command name in domain:verb:noun format. Use Discover to see available commands.
paramsstring- Parameters dict (e.g. {"corporation_id": 123}). Pass "raw": true to skip formatting and get the full API response. Not honored on every command — check the command's `help` for whether `raw` is supported.
cartamcp_get_current_userGet the currently authenticated Carta user profile.Read-onlyGet Current User
Get the currently authenticated Carta user profile.
Inputs
This tool takes no inputs.
cartamcp_list_accountsList all companies and organizations the current user has access to.Read-onlyList Accounts
List all companies and organizations the current user has access to.
Inputs
detailstring- "summary" (default) returns up to the first 10 accounts, plus a total count when there are more. Pass "full" to force the complete list.default
summary searchstring- Search term to filter results by name or description.default
cartamcp_list_contextsList the firms you have access to in Carta Fund Admin.Read-onlyList Contexts
List the firms you have access to in Carta Fund Admin.
Inputs
firm_idstring- Carta firm ID to switch context to.default
firm_namestring- Name of the firm to filter by.default
firm_uuidstring- UUID of the firm to filter by.default
cartamcp_list_resourcesList all available Carta MCP resources and resource templates.Read-onlyList Resources
List all available Carta MCP resources and resource templates.
Inputs
This tool takes no inputs.
cartamcp_read_resourceRead a Carta MCP resource by its URI.Read-onlyRead Resource
Read a Carta MCP resource by its URI.
Inputs
uristringrequired- URI of the resource to read. For templated resources, fill in the template parameters.
cartamcp_request_permissionsGenerate an authorization link to grant Carta MCP access to your account.Read-onlyRequest Permissions
Generate an authorization link to grant Carta MCP access to your account.
Inputs
This tool takes no inputs.
cartamcp_search_toolsSearch for Carta MCP tools using a natural language query.Read-onlySearch Tools
Search for Carta MCP tools using a natural language query.
Inputs
querystringrequired- Natural language query describing the tool you're looking for.
cartamcp_view_remoteRender an interactive Carta view backed by a Module Federation remote.Read-onlyView Remote
Render an interactive Carta view backed by a Module Federation remote.
Inputs
namestringrequired- Name of the view to render. Use Discover with scope=view to see available views.
paramsstring- Parameters dict (e.g. {"corporation_id": 123}).
cartamcp_view_staticRender an interactive Carta view backed by server-bundled HTML.Read-onlyView Static
Render an interactive Carta view backed by server-bundled HTML.
Inputs
namestringrequired- Name of the view to render. Use Discover with scope=view to see available views.
paramsstring- Parameters dict passed to the view as ``window.mcpViewArgs``.
cartamcp_welcomeGet a welcome message and orientation guide from Carta MCP.Read-onlyWelcome
Get a welcome message and orientation guide from Carta MCP.
Inputs
rolestring- Optional role to filter quick-start suggestions by (e.g. CFO, fund accountant, deal team, IR, compliance officer, general partner, fundraising lead). Leave empty to show all.default
cartamcp_set_contextSwitch the active firm so subsequent queries use that firm data.WriteSet Context
Switch the active firm so subsequent queries use that firm data.
- Idempotent
Inputs
firm_idstringrequired- Carta firm ID to switch context to.
cartamcp_skill_checkpointRecord a named execution milestone for a running skill (explicit invocation only).WriteSkill Checkpoint
Record a named execution milestone for a running skill (explicit invocation only).
Inputs
checkpoint_labelstringrequired- Milestone label, e.g. "skill_started" or "skill_finished" for the first/last checkpoint, or a custom snake_case label.
skill_namestringrequired- Full skill identifier being checkpointed.
notesstring- Optional free-text context, e.g. an error summary or a counted quantity.
cartamcp_track_ui_eventRecord a UI event (click, view, or other interaction) from a Carta MCP interface so it shows up in analytics.WriteTrack Ui Event
Record a UI event (click, view, or other interaction) from a Carta MCP interface so it shows up in analytics.
Inputs
contextsarrayrequired- List of small dicts giving extra context for the event. Must include one entry describing which interface sent the event, shaped as {"schema": "iglu:com.carta/mcp_interface/jsonschema/1-0-0", "data": {"interfaceType": ..., "interfaceId": ...}}, where interfaceType is one of "mcp_app", "micro_app", or "artifact".
eventstringrequired- The event to record, as a small dict shaped like {"schema": ..., "data": ...}. Passed through exactly as given.
user_idstring- Optional fallback identity for the event. The server automatically attaches the verified, logged-in user's identity when it can determine one, and that always wins over this value.
cartamcp_call_toolCall a Carta MCP tool by name with the given arguments.DestructiveCall Tool
Call a Carta MCP tool by name with the given arguments.
Inputs
namestringrequired- Name of the tool to call, as returned by Search Tools (use __ instead of : as a separator).
argumentsstring- Arguments to pass to the tool (dict or JSON string).
cartamcp_mutateExecute a write command (POST, PATCH, PUT, DELETE) against Carta.DestructiveMutate
Execute a write command (POST, PATCH, PUT, DELETE) against Carta.
Inputs
commandstringrequired- Fully qualified Carta command name in domain:verb:noun format. Use Discover to see available commands.
paramsstring- Parameters dict (e.g. {"ownerId": 123, "ownerKind": "FIRM", ...}).
No tools match.