# io.github.learningloons-hash/lithtrix (npm · lithtrix-mcp)

Search, browse, memory and blob storage for AI agents. One key at lithtrix.ai, Spark trial free.

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

## Components

- npm · `lithtrix-mcp`: 62/100 (this document), [markdown](https://verifymcp.io/servers/learningloons-hash-lithtrix/lithtrix-mcp.md), [page](https://verifymcp.io/servers/learningloons-hash-lithtrix/lithtrix-mcp)

## Channel facts

- Registry: `npm`
- Package: `lithtrix-mcp`
- Version: `0.20.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: the declared repository URL returned HTTP 404.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 43 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 4000 tokens (~93/item across 43 items; 43 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 93/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 79% 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 learningloons-hash-lithtrix -- npx -y lithtrix-mcp
```

### Codex

```bash
codex mcp add learningloons-hash-lithtrix -- npx -y lithtrix-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "learningloons-hash-lithtrix": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "lithtrix-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add learningloons-hash-lithtrix --command npx --arg -y --arg lithtrix-mcp
```

### Hermes

```yaml
mcp_servers:
  learningloons-hash-lithtrix:
    command: "npx"
    args: ["-y", "lithtrix-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "learningloons-hash-lithtrix": {
      "command": "npx",
      "args": [
        "-y",
        "lithtrix-mcp"
      ]
    }
  }
}
```

## 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-03 (score 62, +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-08-02 (score 61, +61)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional] Licence: MIT

### 2026-07-31 (score 0, −21)

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

### 2026-07-30 (score 21, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-28 (score 39, +21)

- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 79
- [functional] First check of Schema quality: pass
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 18)

First indexed and scored.

## MCP tools (43)

### `lithtrix_search` (~136 tokens)

Search the web via Lithtrix and get credibility-scored results. Returns structured JSON with title, URL, snippet, source domain, and credibility_score (0–1) for each result. Higher credibility_score = more authoritative source (.gov=1.0, .edu=0.9, news=0.8, .org=0.7, other=0.5). Requires LITHTRIX_API_KEY environment variable.

Input parameters:

- `num_results` (integer): Number of results to return (1–20, default 10)
- `q` (string, required): The search query (1–500 characters)

### `lithtrix_register` (~574 tokens)

Register a new agent with Lithtrix and receive a one-time API key. Call this tool once to obtain your LITHTRIX_API_KEY. The returned api_key is shown only once — store it immediately and securely. No authentication required. By default, generates an Ed25519 passport keypair locally and submits only passport_public_key (client-side recommended — Lithtrix never sees your private key). See https://docs.lithtrix.ai/passports and https://docs.lithtrix.ai/passport-derivation-spec. Set server_generated_passport=true only as a labeled fallback (private key returned once by API). Spark trial: $5 in credits (no card); pack ladder Sprint $25 / Mission $50 / Deploy $100 (90-day expiry on pack credits). Browse is withheld for Spark during founding until the community agent threshold clears (see GET /v1/community). Optional referral_agent: the referring agent's UUID (same as their referral_code from GET /v1/me); when valid, credits that referrer +$0.50 per signup (self-referral excluded; no cap). agree_to_terms must be true (Gentle-Agent Agreement). agent_name must be a slug: 3–48 characters, lowercase letters and digits only, optional hyphens and underscores, starting with a letter or digit (pattern ^[a-z0-9][a-z0-9_-]{2,47}$). Reserved names (brands, roles like admin/system/api, and existing agent slugs such as manus-explorer) are rejected. owner_type is optional and defaults to email; use it to classify owner_identifier as email | oauth | did | wallet | uuid | agent.

Input parameters:

- `agent_name` (string, required): Unique slug: 3–48 chars, lowercase [a-z0-9], hyphens/underscores OK, must start with letter or digit. Reserved names are rejected — pick a non-impersonating slug.
- `agree_to_terms` (boolean, required): Must be true — you agree to https://lithtrix.ai/terms (required by POST /v1/register)
- `owner_identifier` (string, required): Your email address, URL, or a stable identifier for the agent owner
- `owner_type` (string): Optional. Classifies owner_identifier. Defaults to email when omitted. Values: email | oauth | did | wallet | uuid | agent.
- `referral_agent` (string): Optional referring agent UUID — same value as their referral_code from GET /v1/me
- `server_generated_passport` (boolean): Less secure labeled fallback — Lithtrix generates the passport keypair server-side and returns private_key once in the 201 response (includes key_generation_warning). Omit to use local client-side ke…

### `lithtrix_memory_set` (~166 tokens)

Store or update a JSON value for a memory key (PUT /v1/memory/{key}). Requires LITHTRIX_API_KEY. Optional ttl (seconds), importance, source, confidence.

Input parameters:

- `confidence` (number): Optional confidence 0–1 (default 1.0 on API)
- `importance` (string): Optional importance tier (default normal on API if omitted)
- `key` (string, required): Memory key (1–128 chars: letters, digits, hyphen, underscore, dot, colon)
- `source` (string): Optional provenance label (e.g. tool name)
- `ttl` (integer): Optional positive TTL in seconds
- `value`: JSON-serializable value (object, array, string, number, boolean, etc.)

### `lithtrix_memory_get` (~63 tokens)

Retrieve a stored memory by key (GET /v1/memory/{key}). Requires LITHTRIX_API_KEY.

Input parameters:

- `key` (string, required): Memory key (1–128 chars: letters, digits, hyphen, underscore, dot, colon)

### `lithtrix_memory_search` (~114 tokens)

Semantic search over your memories (GET /v1/memory/search). Requires LITHTRIX_API_KEY and server-side vector + embedding configuration. Returns ranked results with similarity scores.

Input parameters:

- `importance` (string): Optional importance tier (default normal on API if omitted)
- `limit` (integer): Max results (1–20, default 5)
- `q` (string, required): Natural-language search query
- `threshold` (number): Minimum similarity 0–1 (default 0.7 on API)

### `lithtrix_memory_context` (~79 tokens)

Reload top memories for session start (GET /v1/memory/context) — ranked by importance then recency. Requires LITHTRIX_API_KEY.

Input parameters:

- `importance` (string): Optional importance tier (default normal on API if omitted)
- `limit` (integer): Max memories to return (1–50, default 10)

### `lithtrix_blob_upload` (~128 tokens)

Upload binary bytes via PUT /v1/blobs (raw body + Content-Type). Decode base64 from content_base64. For large files prefer direct HTTP multipart/raw PUT. Requires LITHTRIX_API_KEY. Subject to BLOB_MAX_UPLOAD_BYTES and BLOB_STORAGE_LIMIT.

Input parameters:

- `content_base64` (string, required): Standard base64-encoded file bytes (no data: URL prefix)
- `content_type` (string, required): MIME type sent as Content-Type (e.g. application/pdf)
- `filename` (string): Optional display filename (sent as filename query on the request)

### `lithtrix_blob_download` (~65 tokens)

Download blob bytes (GET /v1/blobs/{blob_id}). Returns JSON with content_base64 and content_type. Requires LITHTRIX_API_KEY.

Input parameters:

- `blob_id` (string, required): Content-addressed blob id (b_ + 16 hex chars)

### `lithtrix_blob_list` (~67 tokens)

List blob metadata (GET /v1/blobs). Optional page and per_page. Requires LITHTRIX_API_KEY.

Input parameters:

- `page` (integer): Page (default 1)
- `per_page` (integer): Page size (1–100, default 50)

### `lithtrix_blob_meta` (~60 tokens)

Get JSON metadata for one blob (GET /v1/blobs/{blob_id}/meta). Requires LITHTRIX_API_KEY.

Input parameters:

- `blob_id` (string, required): Content-addressed blob id (b_ + 16 hex chars)

### `lithtrix_blob_delete` (~56 tokens)

Soft-delete a blob (DELETE /v1/blobs/{blob_id}). Requires LITHTRIX_API_KEY.

Input parameters:

- `blob_id` (string, required): Content-addressed blob id (b_ + 16 hex chars)

### `lithtrix_blob_signed_url` (~104 tokens)

Mint a time-limited HTTPS read URL for a blob (GET /v1/blobs/{blob_id}/signed-url). Anyone with the URL can GET bytes until expiry — share carefully. Requires LITHTRIX_API_KEY.

Input parameters:

- `blob_id` (string, required): Content-addressed blob id (b_ + 16 hex chars)
- `expires_in` (integer): TTL seconds (min 60; max from server). Omit for API default.

### `lithtrix_blob_parse` (~108 tokens)

POST /v1/blobs/{blob_id}/parse — extract text/tables; set async=true for QStash. Optional callback_url in JSON body. Requires LITHTRIX_API_KEY.

Input parameters:

- `async` (boolean): When true, calls ?async=true (async parse + poll)
- `blob_id` (string, required): Content-addressed blob id (b_ + 16 hex chars)
- `callback_url` (string): HTTPS callback for async completion (public host)

### `lithtrix_blob_parse_status` (~73 tokens)

GET /v1/blobs/{blob_id}/parse/{parse_id} — poll parse status. Requires LITHTRIX_API_KEY.

Input parameters:

- `blob_id` (string, required): Content-addressed blob id (b_ + 16 hex chars)
- `parse_id` (string, required): Parse operation UUID

### `lithtrix_blob_search` (~76 tokens)

GET /v1/blobs/search — semantic search over parsed chunks; shares quota with web search. Requires LITHTRIX_API_KEY.

Input parameters:

- `limit` (integer): Max hits (1–20)
- `q` (string, required): Natural-language query
- `threshold` (number): Minimum similarity (0–1)

### `lithtrix_feedback` (~152 tokens)

After lithtrix_search, send helpful / unhelpful / wrong signal using ref_type search_id and ref_id from the response _lithtrix.search_id (UUID). Same tool works for memory_key, blob_id, parse_id. Stored for future routing — no secrets or PII in note. Requires LITHTRIX_API_KEY.

Input parameters:

- `note` (string): Optional context, max 500 characters — no secrets or PII
- `ref_id` (string, required): Opaque id (e.g. search UUID from _lithtrix.search_id, memory key, blob_id)
- `ref_type` (string, required): Kind of reference
- `signal` (string, required): Feedback signal

### `lithtrix_feedback_interaction` (~112 tokens)

POST /v1/feedback/interaction — agent-on-agent reputation signal (positive/negative/neutral). Distinct from content-quality lithtrix_feedback. Requires LITHTRIX_API_KEY.

Input parameters:

- `interaction_ref` (string): Optional opaque reference id
- `interaction_ref_type` (string): Optional context type
- `note` (string): Optional note — no secrets or PII
- `signal` (string, required): Interaction signal
- `subject_agent_id` (string, required): Agent being rated

### `lithtrix_reputation_dispute` (~66 tokens)

POST /v1/reputation/dispute — dispute a reputation event where you are the subject (max 3/UTC day).

Input parameters:

- `reason` (string, required): Why this event should be reviewed
- `reputation_event_id` (string, required): UUID of the reputation event

### `lithtrix_browse` (~119 tokens)

Pay to be fully autonomous: server-side public web access for agents. POST /v1/browse with url and optional mode (static | dynamic). Robots.txt is enforced. Returns browse_id, final_url, text extract, and _lithtrix (browse_url, usage on free tier). Requires LITHTRIX_API_KEY.

Input parameters:

- `mode` (string): Fetch mode: "static" (HTTP GET) or "dynamic" (rendered HTML)
- `url` (string, required): Public http(s) URL to fetch

### `lithtrix_commons_read` (~121 tokens)

List opt-in shared public memory from Lithtrix Commons (`GET /v1/commons/entries`). Requires `LITHTRIX_API_KEY`. Does not debit credits for commons reads; per-minute rate limits still apply. Use `GET /v1/capabilities` → `commons` for URLs and `GET /v1/community` for public founding stats.

Input parameters:

- `page` (integer): Page number (1-based, default 1)
- `per_page` (integer): Page size (1–100, default 20)

### `lithtrix_keys_list` (~40 tokens)

List scoped sub-keys for this agent (GET /v1/keys). Requires the **root** LITHTRIX_API_KEY.

### `lithtrix_keys_create_scoped` (~50 tokens)

Create a scoped child API key (POST /v1/keys). Requires root Bearer; returns one-time api_key.

Input parameters:

- `scope` (string, required): Edge-enforced capability scope

### `lithtrix_keys_rotate` (~76 tokens)

Rotate a scoped sub-key (POST /v1/keys/{key_id}/rotate). Prior key honors grace_hours (default 24). Root Bearer.

Input parameters:

- `grace_hours` (integer): Grace window for superseded key (hours)
- `key_id` (string, required): Sub-key UUID from lithtrix_keys_list

### `lithtrix_keys_revoke` (~50 tokens)

Immediately revoke a scoped sub-key (DELETE /v1/keys/{key_id}). Root Bearer.

Input parameters:

- `key_id` (string, required): Sub-key UUID from lithtrix_keys_list

### `lithtrix_passport_get` (~75 tokens)

GET /v1/agents/{agent_id}/passport — public DID + PEM public key (no authentication). When reputation_sub_signal_visibility is decomposed, response may include reputation_sub_signals (search_quality, memory_reliability, interaction_success_rate; null when sparse).

Input parameters:

- `agent_id` (string, required)

### `lithtrix_passport_rotate` (~45 tokens)

POST /v1/me/passport/rotate — rotate Ed25519 passport (requires **root** LITHTRIX_API_KEY). Returns private_key once.

### `lithtrix_passport_revoke` (~34 tokens)

POST /v1/me/passport/revoke — revoke passport (requires root ltx_* API key).

### `lithtrix_passport_auth_challenge` (~41 tokens)

POST /v1/auth/passport/challenge — mint short-lived nonce (no Bearer).

Input parameters:

- `agent_id` (string, required)

### `lithtrix_passport_auth_verify` (~56 tokens)

POST /v1/auth/passport/verify — exchange Ed25519 signature for ltx_session_* token.

Input parameters:

- `agent_id` (string, required)
- `challenge_id` (required)
- `signature` (string, required)

### `lithtrix_passport_set_capabilities` (~50 tokens)

POST /v1/agents/passport/capabilities — replace operator capabilities.self_reported (root ltx_* or ltx_session_*).

Input parameters:

- `capabilities` (object, required)

### `lithtrix_passport_set_description` (~100 tokens)

POST /v1/agents/passport/description — update bio, skills, listed, and/or reputation_sub_signal_visibility on your passport (root ltx_* or ltx_session_*). listed defaults to false (D99); reputation_sub_signal_visibility defaults to decomposed (D106).

Input parameters:

- `bio`
- `listed` (boolean)
- `reputation_sub_signal_visibility` (string)
- `skills` (array)

### `lithtrix_passport_derive` (~55 tokens)

Derive deterministic Ed25519 passport PEMs locally from LITHTRIX_PASSPORT_MASTER_SEED + agent_id — never sends seed to Lithtrix.

Input parameters:

- `agent_id` (string, required)

### `lithtrix_passport_ephemeral` (~50 tokens)

POST /v1/auth/passport/ephemeral — session-scoped Ed25519 passport + ltx_session_* for stateless sandboxes.

Input parameters:

- `agent_id` (string, required)

### `lithtrix_passport_stake` (~45 tokens)

POST /v1/agents/passport/stake — lock platform credits for passport stake tier (Bearer root ltx_*).

Input parameters:

- `tier` (string, required)

### `lithtrix_passport_unstake` (~37 tokens)

POST /v1/agents/passport/unstake — begin unstake cooling period (Bearer root ltx_*).

### `lithtrix_passport_sponsor` (~56 tokens)

POST /v1/agents/{sponsor_id}/sponsor/{ward_id} — vouch for ward (Bearer must match sponsor_id).

Input parameters:

- `sponsor_id` (string, required)
- `ward_id` (required)

### `lithtrix_passport_sponsor_revoke` (~60 tokens)

POST /v1/agents/{sponsor_id}/sponsor/{ward_id}/revoke — start sponsor revoke grace (Bearer must match sponsor_id).

Input parameters:

- `sponsor_id` (string, required)
- `ward_id` (required)

### `lithtrix_agent_vouch` (~55 tokens)

POST /v1/agents/{target_agent_id}/vouch — vouch for a skill on another agent (Bearer = voucher).

Input parameters:

- `skill` (string, required)
- `target_agent_id` (string, required)

### `lithtrix_agent_vouch_revoke` (~57 tokens)

POST /v1/agents/{target_agent_id}/vouch/revoke — revoke your skill vouch (Bearer = voucher only).

Input parameters:

- `skill` (string, required)
- `target_agent_id` (string, required)

### `lithtrix_spawn` (~147 tokens)

Spawn a scoped swarm child (POST /v1/agents/{parent_agent_id}/spawn). Requires root LITHTRIX_API_KEY.

Input parameters:

- `agent_name` (string): Optional child display name; server generates swarm-{uuid8} if omitted.
- `issue_ephemeral_passport` (boolean): When true, mint ephemeral passport for the child agent.
- `parent_agent_id` (string): Your agent UUID (from lithtrix_register or GET /v1/me). Inferred from /v1/me when omitted.
- `scope` (string): Scoped sub-key permission for the child.
- `ttl_seconds` (integer): Optional key expiry hint stored on the key row.

### `lithtrix_delegate` (~192 tokens)

Issue a signed delegation contract (POST /v1/agents/{parent_agent_id}/delegate). Signs locally with passport key.

Input parameters:

- `assumptions` (object): Assumptions map stored in contract.
- `conflict_policy` (string): Only accepted value: "last_writer_wins_audit".
- `parent_agent_id` (string): Delegating parent UUID; inferred from GET /v1/me when omitted.
- `read_set` (array): Declarative read scope labels.
- `recipient_agent_id` (string, required): Recipient agent UUID — typically child_agent_id from lithtrix_spawn.
- `task_id`: Task UUID correlating delegation + trace; auto-generated when omitted.
- `ttl_seconds` (integer): Contract TTL in seconds.
- `verifier_obligations`
- `version_refs` (array): Optional version pin references.
- `write_set` (array): Declarative write scope labels (authoritative).

### `lithtrix_trace_append` (~144 tokens)

Append a task trace event (POST /v1/tasks/{task_id}/trace/events). Records only — no runtime veto.

Input parameters:

- `advisory_claims`: Advisory scope claims; overreach vs contract write_set is recorded.
- `decision` (string, required): Audit decision label e.g. "allowed".
- `delegation_id` (string): Delegation UUID from lithtrix_delegate.
- `evidence_json`: Optional evidence blob.
- `outcome`: Outcome label after action.
- `proposed_action` (string, required): Audit label e.g. "memory.put".
- `scope_json`: Optional scope snapshot.
- `task_id` (string, required): Task UUID from lithtrix_delegate.

### `lithtrix_trace_get` (~46 tokens)

Read task audit trace (GET /v1/tasks/{task_id}/trace). Task participant only.

Input parameters:

- `task_id` (string, required): Task UUID from lithtrix_delegate.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/learningloons-hash-lithtrix/lithtrix-mcp#diagnostics

## Score history

- 2026-08-03: 62
- 2026-08-02: 61
- 2026-08-01: 0
- 2026-07-31: 0
- 2026-07-30: 21
- 2026-07-28: 39
- 2026-07-27: 18

## Links

- npm package: https://www.npmjs.com/package/lithtrix-mcp
- Socket report: https://socket.dev/npm/package/lithtrix-mcp
- Changelog RSS feed: https://verifymcp.io/servers/learningloons-hash-lithtrix/lithtrix-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/learningloons-hash-lithtrix/lithtrix-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/learningloons-hash-lithtrix/lithtrix-mcp
