search for agents

exact text, regex, filters and vectors built on object storage: fast when warm, cheap when idle, one call to start

agent
or app
API · MCP
skimmerdb
RAM/NVMe
cache
Object
storage (S3)
0.97 recall in 0.8 ms · cold queries in 2 round trips · 50k+ docs/s per server, measured
works with Claude CodeClaudeChatGPTCursorCodexany MCP clientREST
Cost calculator
Storage$0.10 / GB-month
1M docs (~4.6 GB)
$0.46
Writes$0.25 / GB
10% rewritten a month (~407 MB)
$0.10
Queries$0.50 / million
1M queries a month
$0.50
Estimated cost $10.00 monthly minimum, counted against usage
$10.00/month

Cold queries also pass on their object-storage reads ($0.50 per million reads; a warm query makes none). Idle namespaces cost only their bytes.

Workload12k web pages (1.77 GB) + 2k tenants, real S3
p50
0.80ms1.0ms
p90
25ms33ms
p99
64ms131ms
Warm namespaceCold namespace
coldbench: Zipf mix from 8 clients, one c7gd.2xlarge, 400 MB cache, S3 Standard us-east-1; cold = empty disks · all benchmarks

Memory for every agent

A namespace per agent, user or task, created on the fly. Thousands of them sit idle at the price of their bytes and answer again in a round trip or two.

Docs →

Exact lookups, not guesses

Order numbers, error codes, function names, emails: literal and regex search that never misses a match, with exact counts and metadata filters.

Docs →

Vectors on the same data

Store an embedding with each document and search by meaning, alone or narrowed by text and filters in the same query. One copy, one bill.

Docs →

One API for every kind of lookup

Every answer says whether the namespace was warm or cold and how many object-storage reads it made, so you always know what a query cost.

write
NS=https://skimmerdb.com/api/namespaces/support

# upsert: text, metadata, an embedding (optional)
curl $NS/docs -H "Authorization: Bearer $KEY" -d '{
  "docs": [{"id": "t-1",
    "text": "Refund requested for order ACME-1042",
    "meta": {"status": "open", "priority": 3},
    "vector": [0.12, -0.03, ...]}]}'
query
# exact text (or "regex": true), filtered, newest first
curl $NS/search -H "Authorization: Bearer $KEY" -d '{
  "q": "acme-1042", "filter": {"status": "open"}}'

# nearest neighbours, narrowed by text and a filter
curl $NS/search -H "Authorization: Bearer $KEY" -d '{
  "vector": [0.12, -0.03, ...], "q": "refund",
  "filter": {"priority": {"gte": 2}}, "limit": 10}'

Built for agents

skimmerdb speaks MCP with OAuth. The user signs in and picks which namespaces the agent may use and whether it can write. Each connection gets its own key, revocable any time.

  • Scoped keys. Read, write or admin; optionally only some namespaces, like agent-7-*.
  • Isolation. Another tenant's namespace looks exactly like one that doesn't exist.
  • Caps per key. Request rate, queries and writes per billing period.
connect
# Claude Code
claude mcp add --transport http \
  skimmerdb https://skimmerdb.com/mcp

# Claude, ChatGPT, Cursor, Codex: a remote MCP server
https://skimmerdb.com/mcp
LimitCurrent
NamespacesUnlimited
Write throughput (one server, measured)50k+ docs/s to S3
Time to searchable (measured)~33 ms
Vector search recall@10 (defaults)0.97
Vector queries / s (one server, measured)5,600
Vector dimensions1 to 2,048
Document text2 MB
Metadata per document16 KB
Documents per write10,000 (64 MB)
Results per query1,000
RegexRE2, linear time