Documentation

Deterministic search API reference

Search 48.4M knowledge entries or bring your own data for indexing. Tokenized with a 2.8M whole-word vocabulary. Zero storage on our end.

New here? Read why deterministic retrieval matters or what Deterministic Knowledge Infrastructure is.

Base URL
https://cold-api.coldstate.ai
Authentication

All authenticated endpoints require a Bearer token in the Authorization header:

Authorization: Bearer cs_live_...
Quickstart

Your first deterministic query in under 2 minutes

The short version is below. The full quickstart also covers building and searching your own index, and the MCP guide lists every tool.

1.

Create a free account and copy your API key (cs_live_…). No credit card required. Quotas and rate limits for each plan are on the pricing page.

2.

Search the global knowledge base — no index setup needed. Drop in your key and run:

curl -X POST https://cold-api.coldstate.ai/v1/search/global \
  -H "Authorization: Bearer cs_live_..." \
  -H "Content-Type: application/json" \
  -d '{"query": "deterministic retrieval", "limit": 5}'
3.

Prefer MCP? The same API key works as a hosted MCP server — nothing to install. New to MCP? Read What is an MCP server? Otherwise, add this to your client's MCP config and restart it:

{
  "mcpServers": {
    "coldstate": {
      "url": "https://cold-api.coldstate.ai/mcp",
      "headers": { "Authorization": "Bearer cs_live_..." }
    }
  }
}

Claude Code CLI: claude mcp add --transport http coldstate https://cold-api.coldstate.ai/mcp --header "Authorization: Bearer cs_live_..."

Knowledge base

POST/v1/search/global
Search the global knowledge baseauth
GET/v1/search/domains
List knowledge domains with entry countsauth
GET/v1/knowledge/fetch
Fetch an entry verbatim by stable idauth
GET/v1/knowledge/cite
Canonical citation for an entryauth
POST/v1/knowledge/verify
Verify a cited fact is unchangedauth
GET/v1/knowledge/snapshot
Current knowledge-base snapshotauth
GET/v1/knowledge/related
Entries related to a given entryauth
GET/v1/knowledge/resolve
Resolve a name or alias to a canonical entryauth
POST/v1/knowledge/batch
Several queries against one snapshotauth
GET/v1/knowledge/isomorph
Cross-domain structural analog of an entryauth
GET/v1/knowledge/stats
Query coverage stats, or global knowledge-base statsauth
GET/v1/knowledge/capabilities
Machine-readable service manifestauth

Indexes

POST/v1/indexes
Create index with documents (async). Pass mode: 'iaas' for build & download.auth
GET/v1/indexes
List all indexesauth
GET/v1/indexes/:id
Get index details and metricsauth
GET/v1/indexes/:id/documents
Browse documents (reference ids and metrics only)auth
GET/v1/indexes/:id/download
Download IaaS index file (marks as delivered)auth
DELETE/v1/indexes/:id
Delete an indexauth
POST/v1/index
Create a collection or append documents to itauth

Authentication

POST/v1/auth/register
Create account and get initial API key
POST/v1/auth/login
Log in (returns a dashboard session token)
POST/v1/auth/forgot-password
Request a password reset email
POST/v1/auth/reset-password
Set a new password with a reset token
GET/v1/auth/keys
List all API keysauth
POST/v1/auth/keys/create
Create an additional API keyauth
POST/v1/auth/keys/rotate
Deactivate old keys, generate new oneauth
POST/v1/auth/keys/:keyId/deactivate
Deactivate a keyauth
DELETE/v1/auth/keys/:keyId
Delete a keyauth
POST/v1/auth/logout
Revoke the current sessionauth

Usage

GET/v1/usage
Current usage and limitsauth
GET/v1/usage/history
Monthly usage history (last 12 months)auth

Billing

GET/v1/billing/subscription
Current subscriptionauth
POST/v1/billing/portal
Open the Stripe billing portalauth
POST/v1/billing/cancel
Cancel at period endauth
POST/v1/billing/resume
Resume a cancelling subscriptionauth

MCP and discovery

POST/mcp
MCP server (Streamable HTTP, JSON-RPC 2.0)auth
GET/openapi.json
OpenAPI 3.1 description of this API
GET/llms.txt
llms.txt index
GET/.well-known/mcp/server.json
MCP registry manifest
GET/health
Liveness check
GET/ready
Readiness check
Errors & limits

Errors are returned as JSON with the HTTP status repeated in the body:

{ "error": "...", "message": "...", "statusCode": 429 }
400The request body or a parameter is invalid.
401Missing or invalid API key.
403You do not have access to that resource.
404The index, entry or key does not exist.
429A rate limit, burst limit or monthly query quota was exceeded.

Queries are limited to 2000 characters, batches to 10 queries, and results to 100 per query. Quotas and rate limits for each plan are on the pricing page.

Routing States

Every search response includes a routing state that describes the topology of the results:

CRYSTALLINEHigh confidence — single clear cluster of matches
FLUIDCross-domain — multiple relevant document groups
REACTIVENovel connections — many potential matches across domains
Indexing as a Service (IaaS)

Build an index on our infrastructure, download the .db file, and run searches locally. Zero storage on our end — we wipe the file after download or after the 24-hour TTL.

3-Step Flow
1.POST /v1/indexes with mode: "iaas" and your documents. Status: queued → processing
2.Poll GET /v1/indexes/:id until status is ready. Response includes download_url and download_expires_at.
3.GET /v1/indexes/:id/download to stream the .db file. Server copy is deleted immediately. Status: delivered
Status Lifecycle
queued → processing → ready (24h download window) → delivered / expired
Scoring Metrics

Every result carries a primary relevance score plus two diagnostic signals. All three are deterministic — identical for identical inputs — so you can cache, compare, and audit them.

EEntropic relevance — the primary ranking score. Normalized 0–1; higher means a stronger match.
SDSemantic depth — a diagnostic signal of vocabulary richness in the match. Higher = more diverse.
LCLambda coherence — a diagnostic signal of how connected the match is to the wider corpus. Higher = more connected.