Basis · Developers
Run your fund from Claude
Basis exposes its operating spine as an MCP server and a REST API. Connect Claude in under two minutes: live fund data with citations to the register, and drafts that land in Basis as proposals for a named human to approve. The connection token can read and propose — an approve scope does not exist, in the token or anywhere in the API.
Connect
The setup snippets go into your client's configuration, never into a Claude chat. The connector runs locally via npm (Node.js 18+).
- In Basis: Settings → Connect Claude → Create connection token (shown once; revocable any time). The snippets there come pre-filled with your token.
- Claude Desktop — Settings → Developer → Edit Config, add this to
claude_desktop_config.json, save, then fully quit and reopen Claude:{ "mcpServers": { "basis": { "command": "npx", "args": [ "-y", "@basisnetwork/mcp", "--token", "bsk_YOUR_TOKEN", "--url", "https://app.basisnetwork.io" ] } } } - Claude Code — paste into a terminal (not a chat):
claude mcp add basis -- npx -y @basisnetwork/mcp --token bsk_YOUR_TOKEN --url https://app.basisnetwork.io
- Or plain REST from anything:
POST https://app.basisnetwork.io/api/headless/rpc Authorization: Bearer bsk_YOUR_TOKEN {"tool": "get_fund_overview", "arguments": {}}
Read tools
get_fund_overviewraise progress, holders, pending actionsget_needs_youevery pending decision, ranked — the daily starting pointget_capital_call_statuscalls + per-investor funding linesget_investor_pipelineonboarding/compliance gates + flagsget_unfunded_commitmentscallable capital per investorget_distribution_historypayout history with snapshot idsget_distributions_awaiting_withholdingdistributions whose withholding decision is still openget_distribution_detailper-line gross / withholding / offsets / netget_reconciliation_statusregister vs on-chain: GREEN or incidentssearch_investorsfind investors by nameget_investor_fileone investor's gates + positions (no PII dossier)get_nav_bridgeNAV movement between two published valuationsget_proposalone proposal's status + the human decisionget_compliance_policywhat a subscription to this fund requires, per its counselget_document_templatestemplate versions, fields, mapping status, bindingsget_document_requirementsrequired docs per investor type, gates, checklist statusget_joinder_obligationsjoinder policy, obligations by status, member coverageget_fund_settingsledger mode, rails, visibility, signatoryget_capital_accountthe five capital numbers, per investor and rolled upget_serieseach share class: terms, status, units, holdersget_brand_kitletter colors, computed text colors, logo stateget_document_batcha bulk batch: progress, documents, the review recordget_call_previewper-investor call amounts before anything existsEvery read returns citations (register row / snapshot ids) and human deep links — answers with receipts.
Propose tools
propose_capital_calldrafts a call with the exact pro-rata splitpropose_distributiondrafts a distribution; allocation binds at the record-date snapshotpropose_investor_emailone-to-one email; the exact text awaits approvalpropose_fund_updatedrafts the member letter; publishes + emails on approvalpropose_transfer_reviewfiles into the standard transfer queuepropose_policy_changedrafts a requirements revision; the approver sees the diffpropose_fund_settings_changedrafts a rails/visibility/signatory settings revisionpropose_requirement_changedrafts a document-requirement add/archivepropose_series_createdrafts a new share class with its own termspropose_brand_changedrafts new letterhead colors (legibility-checked)Each returns {proposal_id, summary, approval_url}. Nothing executes until a signed-in human approves at the approval_url — every decision is audit-logged with the reviewer's identity.
Webhooks
Subscribe HTTPS endpoints to proposal.created / approved / rejected and reconciliation.incident. Deliveries are HMAC-signed (X-Basis-Signature over timestamp.body) and retried.