Open Cap Table Format
The Open Cap Table Format (OCF ) is a JSON-based open-source standard for storing and sharing cap table data.
TAP vendors the schemas as a git submodule at ocf/, from transfer-agent-protocol/tap-ocf . The pin in this repo is commit 6d8c9322 (ocf_version 1.2.1-alpha+main). We validate offchain records against those files.
TAP is a stock-centric subset of OCF. Convertibles, warrants, vesting v2, consolidation, and stakeholder change events have no onchain TAP surface. Mongo also stores TAP-only fields (tx_hash, is_onchain_synced, deployed_to, deployed_by) that are not OCF.
- enums
- files
- objects
- primitives
- types
OCF Terminology
The Open Cap Format uses specific terminology:
- Stakeholder: An equity holder on the cap table (shareholder). Can be an individual (person) or institution (company/fund).
- Issuer: The company whose cap table is being tracked.
- Security: A specific equity position (shares, options, warrants, convertibles).
- Transaction: Events that modify the cap table (issuances, transfers, cancellations, etc.).
Note that “stakeholder” in OCF context is more specific than the general business term—it refers only to equity holders, not all parties with interest in the company.
TAP still uses OCF’s singular current_relationship onchain and in the product UI. The schema also has current_relationships (array); TAP does not persist that field yet.
How TAP Uses OCF Offchain
OCF defines the JSON shapes TAP uses for offchain records. The API routes on this site use those shapes for issuers, stakeholders, stock classes, transactions, and supporting records.
| Concern | Onchain | OCF / MongoDB |
|---|---|---|
| Authority | Canonical contract state and emitted events | Searchable mirror and metadata |
| IDs | Compact bytes16 values | UUID strings and Mongo document IDs |
| Writes | Connected ADMIN wallet or server operator | Registration routes and event poller |
| Recovery | Re-read contracts and event history | Reconcile or repopulate the mirror |
Use the Cap Table API guides for the routes you can call today. Generated schema docs live under ocf/docs/schema_markdown.
Our Database
TAP stores OCF-shaped records in a database layer . Models are under server/db/objects; reads and writes go through server/db/operations.
- config
- objects
- operations