# io.github.ptrinh/freeport-nostr (npm · freeport-nostr-mcp)

Search Freeport Nostr events by kind, tag & geohash radius (rides, services, reputation).

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

## Components

- remote · `nostr-mcp.trinh.uk`: 63/100, [markdown](https://verifymcp.io/servers/ptrinh-freeport-nostr/nostr-mcp.md), [page](https://verifymcp.io/servers/ptrinh-freeport-nostr/nostr-mcp)
- npm · `freeport-nostr-mcp`: 65/100 (this document), [markdown](https://verifymcp.io/servers/ptrinh-freeport-nostr/freeport-nostr-mcp.md), [page](https://verifymcp.io/servers/ptrinh-freeport-nostr/freeport-nostr-mcp)

## Channel facts

- Registry: `npm`
- Package: `freeport-nostr-mcp`
- Version: `0.5.0`
- 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**: 88/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (126 of 127), 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 (126 of 127), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 44 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 79/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 952 tokens (~136/item across 7 items; 5 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 87/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 60% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add ptrinh-freeport-nostr -- npx -y freeport-nostr-mcp
```

### Codex

```bash
codex mcp add ptrinh-freeport-nostr -- npx -y freeport-nostr-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add ptrinh-freeport-nostr --command npx --arg -y --arg freeport-nostr-mcp
```

### Hermes

```yaml
mcp_servers:
  ptrinh-freeport-nostr:
    command: "npx"
    args: ["-y", "freeport-nostr-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "ptrinh-freeport-nostr": {
      "command": "npx",
      "args": [
        "-y",
        "freeport-nostr-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-02 (score 65, +41)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Schema quality: unverified → good
- [functional improvement] License: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: MIT

### 2026-07-31 (score 24, +18)

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

### 2026-07-30 (score 6, −44)

- [security regression] Malware scan: pass → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Tool coverage: 100 → unverified

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

First indexed and scored.

## MCP tools (5)

### `nostr_search_intents` (~251 tokens)

Search Freeport ride/service/product intents (offers & requests). Filter by side, category/area topic tags, and an optional geographic radius. Results are decoded, expiry-filtered, and sorted nearest-first when a point is given.

Input parameters:

- `includeExpired` (boolean)
- `limit` (integer)
- `near` (object): Filter & sort by distance from this point.
- `relaySideGeohash` (boolean): Also narrow at the relay via a #g cover of the radius. Only effective if posts carry geohash-prefix tags; off by default.
- `relays` (array): Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.
- `side` (string): offer = drivers/providers/sellers; request = riders/buyers; any = both
- `since` (integer): Only events created at/after this unix-seconds time.
- `topics` (array): Topic `t` tags to require (category/subcategory/area keys, e.g. "vn_hanoi", "ridesharing").
- `until` (integer): Only events created at/before this unix-seconds time.

### `nostr_search_reputation` (~130 tokens)

Fetch reputation signals for a pubkey: karma ratings (kind 32103) it received and deal receipts (kind 32104). Returns proven-deal count (both receipt halves present) and a karma summary. Note: scores are subjective and un-weighted here; do not treat as Sybil-proof.

Input parameters:

- `limit` (integer)
- `pubkey` (string, required): Subject pubkey (hex) to look up reputation for.
- `relays` (array): Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.

### `nostr_get_event` (~62 tokens)

Fetch one or more events by id. Returns the raw signed events.

Input parameters:

- `ids` (array, required)
- `relays` (array): Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.

### `nostr_profile` (~145 tokens)

Fetch NIP-01 profile metadata (kind 0) for one or more pubkeys — name, about, picture, nip05, lud16, etc. Optionally include each author's most recent notes (kind 1). General-purpose: works for any Nostr user, not just Freeport.

Input parameters:

- `pubkeys` (array, required): Hex pubkeys to fetch profiles for.
- `recentNotes` (integer): If >0, also fetch up to this many recent text notes (kind 1) per pubkey.
- `relays` (array): Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.

### `nostr_query_raw` (~157 tokens)

Escape hatch: run an arbitrary NIP-01 filter (kinds/authors/ids/tags/since/until/limit). Use the typed tools above when they fit. Returns raw signed events.

Input parameters:

- `authors` (array)
- `ids` (array)
- `kinds` (array)
- `limit` (integer)
- `relays` (array): Override the relay set for this call (ws/wss URLs, max 10). Defaults to the server relays.
- `since` (integer)
- `tags` (object): Tag filters, e.g. {"t":["vn_hanoi"],"g":["w3gv"]}. Keys are single tag letters.
- `until` (integer)

## Diagnostics

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

## Score history

- 2026-08-03: 65
- 2026-08-02: 65
- 2026-08-01: 24
- 2026-07-31: 24
- 2026-07-30: 6
- 2026-07-28: 50
- 2026-07-27: 50

## Links

- npm package: https://www.npmjs.com/package/freeport-nostr-mcp
- Socket report: https://socket.dev/npm/package/freeport-nostr-mcp
- Repository: https://github.com/ptrinh/freeport
- Changelog RSS feed: https://verifymcp.io/servers/ptrinh-freeport-nostr/freeport-nostr-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ptrinh-freeport-nostr/freeport-nostr-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ptrinh-freeport-nostr/freeport-nostr-mcp
