---
name: 6wdb
description: Query 6wdb - a database of AI agents, MCP servers, and developer tools. Every tool has a six-word summary, a six-W spec (who, what, where, when, why, with) plus a seventh "watch" note on install-risk, and a Proof Score from verified execution telemetry. Search is hybrid (keyword + semantic). Use this to look up, compare, or shortlist tools - and report back how they performed.
---

# 6wdb - tool discovery API

6wdb catalogues AI agents, MCP servers, and dev tools across 11 categories. Each
entry is a six-word pitch, a six-W spec, and a seventh **watch** note
(install-risk and provenance), scored by a **Proof Score**:
60% verified execution success rate · 25% human star rating · 15% recency.
Search is **hybrid**: exact keyword matches first, then closest-by-meaning
(semantic) when keywords fall short - each result carries `matched_by`.

**Base URL:** `https://6wdb.com` - replace with the host you are pointed at
(e.g. `http://localhost:8000` in development). Reads need **no auth**.

## Two ways in

1. **REST (below).** Plain JSON.
2. **Native MCP server at `/mcp`** (streamable HTTP, stateless). Tools:
   `search_6wdb(query, kind, domain, limit)`, `get_tool(slug)`,
   `report_telemetry(api_key, tool_slug, execution_status, …)`.
   Point any MCP client at `<host>/mcp` to discover tools mid-loop.

## Read endpoints

### `GET /api/v1/search`

The taxonomy is faceted: **`kind`** is how you run a tool (one of five) and is
orthogonal to **`domain`**, what it does (a tool can hold several). Filter on
either or both - e.g. `kind=MCP Server&domain=Retrieval & Memory`.

| Param | Meaning |
|-------|---------|
| `q` | Free text over name, six-word summary, "what", "why", tags. |
| `kind` | Exact match, one of: `MCP Server`, `Library / SDK`, `Application`, `Hosted Service`, `Model`. |
| `domain` | Matches tools carrying it, one of: `Agents & Orchestration`, `Coding`, `Retrieval & Memory`, `Inference & Serving`, `Fine-tuning & Training`, `Observability & Evaluation`, `Guardrails & Structure`, `Apps & UIs`, `Automation & Integration`. |
| `limit` | Max results, default 10, cap 25. |

Response: `{query, kind, domain, results_count, tools: [...]}` where each tool is:

```json
{
  "name": "Playwright MCP",
  "slug": "playwright-mcp",
  "kind": "MCP Server",
  "domains": ["Automation & Integration"],
  "tags": ["TypeScript", "Playwright"],
  "six_word_summary": "Give agents a real, driveable browser.",
  "proof_score": 98.4,
  "proof_score_version": "2",
  "human_rating": 4.8,
  "telemetry": {"reports": 132, "success_rate": 97.7, "last_report": "…"},
  "6w_spec": {"who": "…", "what": "…", "where": "…", "when": "…", "why": "…", "with": "…"},
  "watch": "Official Microsoft repo; no credentials; drives a real browser.",
  "matched_by": "lexical",
  "github": "https://github.com/…",
  "docs": "https://…"
}
```

- `proof_score`, `human_rating`, `telemetry` are `null` for unrated tools;
  `proof_score_version` travels with any non-null score.
- `6w_spec.with` lists dependencies. **`watch`** is the seventh W - install-risk
  and provenance (credential scope, outbound calls, maintainer type); `null`
  when unassessed. Weigh it before recommending a tool that wants credentials.
- **`matched_by`** is `lexical` (exact keyword) or `semantic` (closest by
  meaning). Semantic results appear only when keyword hits are scarce, so a
  situational query like "make my agent remember things" still returns memory
  tools.

### `GET /api/v1/tools/{slug}`
One tool (shape above, plus `reviews` count and `created_at`). Also carries two
relation lists of `{slug, name}`: **`alternatives`** (similar tools you would
choose between, computed from embeddings within the same kind + domain) and
**`works_with`** (complementary tools commonly used together). `404` if unknown.

### Reference
`GET /api` (reference page) · `GET /openapi.json` (schema) · `GET /docs` (interactive).

## Write path: report your executions

After you use a tool you discovered here, report how it went - reports feed
that tool's Proof Score. This is proof-of-execution telemetry, **not**
opinion: send what actually happened.

1. Register once: `POST /api/v1/keys` `{"name": "your-agent", "contact": "you@example.com"}`
   → `{"api_key": "6wdb_…"}` (shown once; store it).
2. Report: `POST /api/v1/telemetry` with header `X-API-Key: 6wdb_…`:

```json
{
  "tool_slug": "playwright-mcp",
  "execution_status": "success",
  "latency_ms": 420,
  "tokens_consumed": 180,
  "error_message": null
}
```

`execution_status` ∈ `success | schema_error | runtime_error | timeout`.

**Rules:** max 30 reports/min per key; repeated identical reports flag the key
(no score-pumping); report only executions that actually happened. Scores are
anti-farmed: one key one vote (per-key success rates, not pooled reports), votes
weighted by key age, flagged keys excluded retroactively; the formula version is
`proof_score_version`.

Human star reviews (`POST /api/v1/reviews`) are closed until human login
ships - do not attempt to post reviews as an agent.

## Submitting a tool you build or represent

Two paths, both land in a review queue for human approval:

- **Agents / authors:** add a `6w.json` at the repo root (schema:
  `/static/6w.schema.json` - six-word pitch, the six Ws, and an optional
  `watch` note, used verbatim), then POST the repo URL:

```bash
curl -X POST "https://6wdb.com/api/v1/submit" \
  -H 'content-type: application/json' \
  -d '{"repo_url": "https://github.com/you/your-tool"}'
```

- **Humans:** fill the web form at `https://6wdb.com/submit`.

`202` → held for human review. `422` explains exactly what to fix (missing
file, pitch not six words, bad kind or domain). `409` → already listed or queued.

## Bulk access

Need many/all records? Download the nightly snapshot instead of crawling:
`GET /static/snapshots/6wdb-latest.json.gz` (full dataset + Proof Scores).
Read endpoints are cached (up to 5 min) and support ETag/If-None-Match.

## Examples

```bash
curl "https://6wdb.com/api/v1/search?q=browser"
curl "https://6wdb.com/api/v1/search?kind=MCP%20Server&domain=Retrieval%20%26%20Memory&limit=5"
curl "https://6wdb.com/api/v1/tools/langgraph"

KEY=$(curl -s -X POST https://6wdb.com/api/v1/keys \
  -H 'content-type: application/json' \
  -d '{"name":"my-agent"}' | jq -r .api_key)

curl -X POST https://6wdb.com/api/v1/telemetry \
  -H "X-API-Key: $KEY" -H 'content-type: application/json' \
  -d '{"tool_slug":"playwright-mcp","execution_status":"success","latency_ms":420}'
```

## Using it well

- For "what should I use for X": `GET /api/v1/search?q=X`, shortlist by
  `six_word_summary` + `proof_score`, compare via `why`/`what`.
- Prefer higher `proof_score` when candidates tie; treat `null` as
  unrated, not bad.
- The data is curated, not exhaustive - absence is not evidence a tool
  doesn't exist.
