Developers
Your contracts,
as an API and an agent toolbox.
Everything version90 knows about your contracts — the searchable archive, extracted terms, negotiation status, AI findings — is available over a REST API and a remote MCP server for AI agents. One hard rule, enforced structurally: programmatic access can read, ingest and analyze, but never edits documents.
Five-minute quickstart
1. Mint a token
In the app: Settings → API tokens → Create token (org admins only).
The secret — v90_… — is shown once. Tokens
are long-lived, act with your role, and are revocable instantly.
curl https://app.version90.com/api/v1/archive?q=renewal \ -H "Authorization: Bearer $V90_TOKEN"
claude mcp add version90 https://api.version90.com/api/v1/mcp --transport http # No token here: MCP uses OAuth — the client opens a browser to # sign in with your version90 account the first time.
Then ask the agent: "Which of our agreements auto-renew in the next 90 days, and
what are their notice windows?" — it will use search_archive
and answer from your extracted terms.
REST API
Token auth, the endpoint map, errors, and the interactive OpenAPI reference.
Read →
MCP server
One URL, seven tools, stateless. Setup for Claude, Cursor, and anything MCP-capable.
Read →
Archive recipes
The flagship: bulk import, renewal calendars, warehouse export, agent Q&A.
Read →
Ground rules
- Auth: REST uses
Authorization: Bearer v90_…on every request — tokens are the machine credential and act as their creator (same role, same limits). The MCP server uses OAuth instead: you sign in with your version90 account; no token to paste. - No document editing, ever: endpoints that modify document content return
403 api_token_forbiddenfor tokens. The MCP server simply has no editing tool. - Usage: API and MCP actions meter exactly like in-app actions (AI credits, contracts, archive capacity) and appear on the Usage page attributed to the token's creator.
- Tenancy: a token sees exactly one organization. There is no cross-org anything.