A shared, machine-readable language for capital. Structured, typed, versioned, composable. Open source under Apache 2.0.
Open Capital Protocol defines nine machine-readable data structures that capture every meaningful object in venture capital: entities, companies, funds, theses, instruments, rounds, signals, relationships, and transactions. Each object is typed, versioned, and validated against a published JSON Schema.
Every interaction in venture -- a fundraise, a term sheet, a portfolio review, a capital call -- involves the same underlying data. OCP provides the vocabulary so that data can be structured once and understood anywhere.
OCP is infrastructure, not a product. It is a specification you implement, a schema you validate against, a protocol your systems speak. Anyone can build on it. Anyone can contribute.
The spec is public. The schemas are open. The TypeScript SDK is published. The reference server is runnable. Everything is Apache 2.0 licensed -- use it, fork it, build on it.
Every participant in venture capital -- founders, funds, LPs, agents -- operating on a shared, machine-readable language.
How the nine primitives reference each other.
TypeScript SDK. JSON schemas. Reference server. Everything you need to validate, serve, and consume OCP data. Apache 2.0.
Nine typed interfaces. Nine AJV validators. Auto-detection of ocp_type for zero-config validation.
All nine primitives published as JSON Schema Draft-07. Use them with any AJV-compatible validator in any language.
A runnable Hono server with 10 OCP endpoints serving all nine primitives. Deploy locally or to Cloudflare Workers.
59 unit tests covering all nine primitives. Run against any OCP-compliant server to verify conformance.
// Initialize and validate const ocp = new OCP({ version: '1.0.0' }) const company = { ocp_type: 'company', name: 'Quill Meetings', financials: { mrr_cents: 14200000, growth_rate_mom: 0.29, runway_months: 14.2 } } const result = ocp.validate(company) // => { valid: true, errors: [] } // Any OCP object -- auto-detected const entity = { ocp_type: 'entity', role: 'founder', name: 'Alex Chen' } ocp.validate(entity) // => { valid: true, errors: [] }
GenNote is ocp.instrument where instrument_type = "gennote". A structured instrument schema with machine-readable adaptive terms.
An array of structured term objects. Each defines a trigger field, an operator, a threshold, and an action. Terms are schema-defined data -- not executable logic.
Specifies which data sources are required for compliance monitoring. Defines the expected data streams that feed into the instrument's state.
A structured status field: compliant, partial, or non_compliant. Timestamped, with a violations array.
"adaptive_terms": [{ "trigger_field": "string", "operator": "exceeds | below | equals", "threshold": "number", "action": "string", "rationale": "string" }]
"compliance": { "status": "compliant | partial | non_compliant", "checked_at": "ISO 8601 timestamp", "violations": ["string"] }
"connector_requirements": [{ "source_type": "string", "fields_required": ["string"], "frequency": "realtime | daily | monthly" }]
OCP is in developer preview. Get early access to the SDK, schemas, and reference server.
We'll be in touch when the public API is ready.