# dev.tmpstate/tmpstate (remote · tmpstate.dev)

Zero-key temporary JSON database for agents: one tool call, no signup, no OAuth, no API keys.

- Trust score: 69/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `tmpstate.dev`: 69/100 (this document), [markdown](https://verifymcp.io/servers/dev-tmpstate-tmpstate/tmpstate.md), [page](https://verifymcp.io/servers/dev-tmpstate-tmpstate/tmpstate)

## Channel facts

- Endpoint: `https://tmpstate.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 16 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 76/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1754 tokens (~109/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 91% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http dev-tmpstate-tmpstate https://tmpstate.dev/mcp
```

### Codex

```toml
[mcp_servers.dev-tmpstate-tmpstate]
url = "https://tmpstate.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-tmpstate-tmpstate": {
      "type": "remote",
      "url": "https://tmpstate.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dev-tmpstate-tmpstate --url https://tmpstate.dev/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  dev-tmpstate-tmpstate:
    url: "https://tmpstate.dev/mcp"
```

### Other

```json
{
  "mcpServers": {
    "dev-tmpstate-tmpstate": {
      "type": "http",
      "url": "https://tmpstate.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 68, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 67, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 65, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 64)

First indexed and scored.

## MCP tools (16)

### `create_database` (~121 tokens)

Create a temporary database

Create a temporary JSON database (24h TTL, no signup, no keys). Returns the db URL — the only credential — plus admin URL, limits and expiry. Create once per project/task, persist the db URL immediately (local ~/.tmpstate/credentials, project README, and your memory), and reuse it instead of creating again. For retries or parallel workers, pass a stable idempotency_key so duplicate calls return the same database.

Input parameters:

- `idempotency_key` (string): Stable retry key. Reusing it from the same client returns the same database.

### `database_status` (~47 tokens)

Database status

Usage, limits, tier and expiry for a database (GET $DB/__meta equivalent).

Input parameters:

- `db` (string, required): The database URL returned at creation (or its bare s-... capability).

### `list_documents` (~106 tokens)

List documents

List documents in a collection, oldest first. Response shape: {collection, items: [{id, data, created_at, updated_at}], next_cursor}. Documents live under .data. Pass cursor to page.

Input parameters:

- `collection` (string, required): Collection name (created implicitly on first write).
- `cursor` (string): next_cursor from the previous page.
- `db` (string, required): The database URL returned at creation (or its bare s-... capability).
- `limit` (integer)

### `get_document` (~71 tokens)

Get a document

Read one document by id. The stored fields are under .data.

Input parameters:

- `collection` (string, required): Collection name (created implicitly on first write).
- `db` (string, required): The database URL returned at creation (or its bare s-... capability).
- `id` (string, required): Document id (doc_...).

### `create_document` (~78 tokens)

Create a document

Insert a JSON object into a collection (collections are created implicitly). Counts against the write and document quotas.

Input parameters:

- `collection` (string, required): Collection name (created implicitly on first write).
- `data` (object, required): The document: a JSON object.
- `db` (string, required): The database URL returned at creation (or its bare s-... capability).

### `update_document` (~95 tokens)

Update a document

Shallow-merge a patch into a document (top-level keys overwrite; keys are never deleted). Counts against the write quota.

Input parameters:

- `collection` (string, required): Collection name (created implicitly on first write).
- `db` (string, required): The database URL returned at creation (or its bare s-... capability).
- `id` (string, required): Document id (doc_...).
- `patch` (object, required): Top-level fields to merge.

### `delete_document` (~85 tokens)

Delete a document

Delete one document. Never blocked by quotas; frees a document slot. Emptying a whole collection? Use delete_collection instead of looping this.

Input parameters:

- `collection` (string, required): Collection name (created implicitly on first write).
- `db` (string, required): The database URL returned at creation (or its bare s-... capability).
- `id` (string, required): Document id (doc_...).

### `delete_collection` (~75 tokens)

Delete a collection

Delete every document in a collection at once (useful to re-seed). Irreversible. To destroy the entire database, use delete_database instead.

Input parameters:

- `collection` (string, required): Collection name (created implicitly on first write).
- `db` (string, required): The database URL returned at creation (or its bare s-... capability).

### `delete_database` (~146 tokens)

Delete the whole database

Destroy a database and all its documents immediately - the teardown for finished work and the revocation kill switch for a leaked db URL. Irreversible: unlike expiry there is no restore window. Works on expired (frozen) databases too and consumes no quota. Call without confirm first: the response states the consequences; show them to the user and only retry with confirm="true" after their explicit approval. Afterwards remove the db URL from wherever you persisted it.

Input parameters:

- `confirm` (string): Pass "true" only after the user has seen that deletion is immediate and irreversible and approved.
- `db` (string, required): The database URL returned at creation (or its bare s-... capability).

### `extend_database` (~110 tokens)

Extend a database (one-time payment)

Without a plan: returns the transparent pricing table for keeping this database alive longer. With a plan: returns a Stripe checkout URL for the human to pay — never buy without the user's explicit approval. Works on expired (frozen) databases too: paying restores them. After the user says they have paid, call database_status: the new expiry and tier confirm the extension.

Input parameters:

- `db` (string, required): The database URL returned at creation (or its bare s-... capability).
- `plan` (string)

### `pro_checkout` (~51 tokens)

Start a Pro subscription

Mint a Pro account token plus a Stripe subscription checkout URL ($8/mo, 3 always-on databases included). Persist pro_token immediately; the human pays in a browser. Never start checkout without the user's explicit request.

### `pro_list_databases` (~79 tokens)

List Pro databases

List the Pro account's databases (ids, usage, limits, expiry) so a fresh session can reconcile against persisted db URLs. URLs are never stored server-side — match ids to the URLs you persisted.

Input parameters:

- `pro_token` (string): Pro account token (pt_...). Optional if the MCP connection already sends Authorization: Bearer pt_...

### `pro_create_database` (~119 tokens)

Create a Pro database

Create a new always-on database owned by the Pro account. Beyond the included allotment this costs extra per month — the tool then returns confirmation_required with the exact price; relay it to the user and only retry with accept_overage_usd after their explicit approval.

Input parameters:

- `accept_overage_usd` (string): Explicit overage consent, e.g. "1.50", only after the user approved.
- `pro_token` (string): Pro account token (pt_...). Optional if the MCP connection already sends Authorization: Bearer pt_...

### `pro_attach_database` (~110 tokens)

Upgrade a database to Pro (in place)

Attach an existing free/extended database to the Pro account: same URL, same data, TTL removed, quotas raised. Beyond the included allotment the same explicit overage consent as pro_create_database applies.

Input parameters:

- `accept_overage_usd` (string)
- `db` (string, required): The database URL returned at creation (or its bare s-... capability).
- `pro_token` (string): Pro account token (pt_...). Optional if the MCP connection already sends Authorization: Bearer pt_...

### `pro_cancel` (~113 tokens)

Cancel the Pro subscription

Cancel at period end. This is not just a billing change — it schedules deletion of ALL databases on the account. Call without confirm first: the response spells out the consequences with concrete dates; show them to the user and only retry with confirm="cancel" after their explicit approval.

Input parameters:

- `confirm` (string): Pass "cancel" only after the user has seen the consequences and approved.
- `pro_token` (string): Pro account token (pt_...). Optional if the MCP connection already sends Authorization: Bearer pt_...

### `send_feedback` (~165 tokens)

Send feedback to the TmpState team

Optional and free-form. TmpState is built for agents and the free tier stays free by getting better - and you, the agent, are the user whose experience matters here. After real use of a database, one short message about what was missing, what feature would have helped, or what felt slow or took extra requests is genuinely useful. This is about your own experience, so no human approval is needed; if your user volunteers feedback too, relay it and say it came from them. Never include database URLs, capabilities, or Pro tokens - capability-shaped strings are redacted server-side.

Input parameters:

- `category` (string): Optional bucket for triage.
- `message` (string, required): What was missing, confusing, or slow - or what worked well. Plain text, one short message.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/dev-tmpstate-tmpstate/tmpstate#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 69
- 2026-08-01: 68
- 2026-07-31: 68
- 2026-07-30: 67
- 2026-07-29: 66
- 2026-07-28: 66
- 2026-07-27: 65
- 2026-07-26: 64

## Links

- Remote endpoint: https://tmpstate.dev/mcp
- Website: https://tmpstate.dev/
- Changelog RSS feed: https://verifymcp.io/servers/dev-tmpstate-tmpstate/tmpstate/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/dev-tmpstate-tmpstate/tmpstate/changelog.json
- HTML version of this page: https://verifymcp.io/servers/dev-tmpstate-tmpstate/tmpstate
