# Introduction

> SkimmerDB is a hosted database for apps and AI agents: exact and regex search, vectors and SQL over documents kept in object storage.

SkimmerDB is a hosted database you create with one call. Make a **namespace** per user, agent,
task or dataset, push **documents** into it, and read them back four ways from the same copy:

- **Exact and regex search** over the text, with metadata filters, newest first.
- **Exact counts** of what matches.
- **Vector search** (embeddings), alone or hybrid with a text and a filter.
- **SQL** over the metadata, with text matches inside `WHERE`.

Every namespace lives in object storage (S3), and servers keep nothing of their own. An idle
namespace costs only the bytes it stores, and the first query after a long sleep opens it in a
round trip or two. A write is acknowledged only once it's stored in object storage.

## What it's for

| Use | How it looks |
|---|---|
| Agent memory and context | a namespace per user or agent run, searched by exact names, ids and error codes, and by meaning with vectors |
| Search over docs, code, tickets and logs | literal or RE2 regex search with filters, exact counts, cursors that survive compaction |
| Semantic and hybrid search | vector search narrowed by a text match and a metadata filter in one query |
| Analytics over events and traces | SQL with `GROUP BY` and aggregates over metadata, with `contains()` and `grep()` on the text |

You reach it over a REST API (`https://api.skimmerdb.com/v1`), the
[Python and TypeScript clients](/sdks), or [MCP](/mcp) for agents such as Claude, ChatGPT,
Codex and Cursor.

## Three calls

Sign up (the answer has your key), write (the first write makes the namespace), search:

```sh title="curl"
B=https://api.skimmerdb.com/v1
KEY=$(curl -s $B/signup -d '{"email": "ada@example.com", "name": "Ada", "password": "correct horse"}' | jq -r .key)

curl -s $B/namespaces/support/docs -H "Authorization: Bearer $KEY" -d '{
  "wait": true,
  "docs": [{"id": "t-1", "text": "Refund requested for order ACME-1042", "meta": {"status": "open"}}]}'

curl -s $B/namespaces/support/search -H "Authorization: Bearer $KEY" \
  -d '{"q": "acme-1042", "filter": {"status": "open"}}'
```

The [quickstart](/quickstart) goes on from there: filters, counts, SQL and vectors.

## Where to go next

- [Quickstart](/quickstart): from no account to search, SQL and vectors in a few minutes.
- [Concepts](/concepts): tenants, keys, namespaces, documents, and what a query costs.
- [Data model](/guides/data-model): how to choose namespaces, ids, text and metadata so everything stays fast and cheap.
- [Analytics with SQL](/guides/analytics): your documents as a column store.
- [Connect an agent](/mcp): the MCP server, with OAuth or a key.
- [Agent skill](/agent-skill): teach Claude Code or Codex to use SkimmerDB well.
- [API reference](/api): every operation, with a console to try it.
