Trust-aware Nostr MCP server for AI agents and humans. Verification, proximity, and access woven into every interaction.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http
verified
reported
listed in the official MCP registry counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
no tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 33eb25e · analyzer v17 · 3d ago
skills & prompt files 3
- agent-rulesforgesworn-bray-33eb25e/.cursorrules
- agent-rulesforgesworn-bray-33eb25e/AGENTS.md
- agent-rulesforgesworn-bray-33eb25e/CLAUDE.md
danger signals1
- credential in logscredential in logforgesworn-bray-33eb25e/site/demos/demo-phoenixd/nwc-bridge.mjs:59
console.log(`CLIENT_SECRET=${bytesToHex(clientSecret)}`)
evidence-backed
findings quoted directly from the published source artifact — not inferred
filesystem 12
- fs forgesworn-bray-33eb25e/scripts/build-widgets.mjs :9
import { readFileSync, writeFileSync, mkdirSync } from 'node:fs' - fs forgesworn-bray-33eb25e/scripts/export-tool-schemas.mjs :9
import { readFileSync, writeFileSync, mkdtempSync, rmSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/config.ts :1
import { readFileSync, existsSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/dispatch/identities.ts :8
import { readFileSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/identity/shamir.ts :1
import { writeFileSync, readFileSync, statSync, renameSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/serve.ts :10
import { readFileSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/social/blossom.ts :1
import { readFileSync, statSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/social/scheduled.ts :1
import { mkdirSync, writeFileSync, readFileSync, readdirSync, unlinkSync, existsSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/state.ts :8
} from 'node:fs' - fs forgesworn-bray-33eb25e/src/sync/handlers.ts :13
import { readFileSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/widgets/index.ts :9
import { readFileSync } from 'node:fs' - fs forgesworn-bray-33eb25e/src/zap/handlers.ts :1
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs'
network 18
- net forgesworn-bray-33eb25e/site/demos/demo-phoenixd/nwc-bridge.mjs :76
const res = await fetch(`${PHOENIXD_URL}${path}`, opts) - net forgesworn-bray-33eb25e/src/admin/handlers.ts :100
const response = await fetch(url, { - net forgesworn-bray-33eb25e/src/http-client.ts :18
} from 'undici' - net forgesworn-bray-33eb25e/src/identity/nip05.ts :37
const resp = await fetch(url, { signal: AbortSignal.timeout(NIP05_TIMEOUT) }) - net forgesworn-bray-33eb25e/src/index.ts :29
// Route every fetch() in this process through the SOCKS proxy when Tor is - net forgesworn-bray-33eb25e/src/marketplace/handlers.ts :421
const response = await fetch(url, { - net forgesworn-bray-33eb25e/src/relay/curl.ts :102
const response = await fetch(url, { - net forgesworn-bray-33eb25e/src/relay/handlers.ts :62
const resp = await fetch(httpUrl, { - net forgesworn-bray-33eb25e/src/relay/intelligence-handlers.ts :236
const resp = await fetch(httpUrl, { - net forgesworn-bray-33eb25e/src/relay/spell.ts :104
// Lazy contact list fetch (cached per cast) - net forgesworn-bray-33eb25e/src/sdk.ts :300
fetch(nip19: string): Promise<unknown> - net forgesworn-bray-33eb25e/src/serve.ts :9
import { createServer } from 'node:http' - net forgesworn-bray-33eb25e/src/social/blossom.ts :61
const response = await fetch(`${serverUrl}/upload`, { - net forgesworn-bray-33eb25e/src/social/dm.ts :159
* @param args.limit - Maximum number of events to fetch (default 50). - net forgesworn-bray-33eb25e/src/social/notifications.ts :40
* @param opts.limit - Maximum number of events to fetch (default 50). - net forgesworn-bray-33eb25e/src/util/handlers.ts :336
const response = await fetch('https://raw.githubusercontent.com/nostr-protocol/nips/master/README.md', { - net forgesworn-bray-33eb25e/src/widgets/profile-images.ts :53
const res = await fetch(url, { - net forgesworn-bray-33eb25e/src/workflow/handlers.ts :763
const resp = await fetch(httpUrl, {
secrets 3
- secrets forgesworn-bray-33eb25e/site/demos/demo-phoenixd/nwc-bridge.mjs :28
const PHOENIXD_PASSWORD = process.env.PHOENIXD_PASSWORD - secrets forgesworn-bray-33eb25e/src/config.ts :102
const keyFilePath = process.env.NOSTR_SECRET_KEY_FILE ?? file.secretKeyFile - secrets forgesworn-bray-33eb25e/src/index.ts :170
const token = process.env.BRAY_HTTP_TOKEN ?? randomUUID()
tool registrations 200
- search-actions forgesworn-bray-33eb25e/src/catalog.ts :112
- execute-action forgesworn-bray-33eb25e/src/catalog.ts :157
- dispatch-send forgesworn-bray-33eb25e/src/dispatch/tools.ts :51
- dispatch-check forgesworn-bray-33eb25e/src/dispatch/tools.ts :102
- dispatch-reply forgesworn-bray-33eb25e/src/dispatch/tools.ts :120
- dispatch-ack forgesworn-bray-33eb25e/src/dispatch/tools.ts :163
- dispatch-status forgesworn-bray-33eb25e/src/dispatch/tools.ts :185
- dispatch-cancel forgesworn-bray-33eb25e/src/dispatch/tools.ts :211
- dispatch-refuse forgesworn-bray-33eb25e/src/dispatch/tools.ts :233
- dispatch-failure forgesworn-bray-33eb25e/src/dispatch/tools.ts :255
- dispatch-query forgesworn-bray-33eb25e/src/dispatch/tools.ts :279
- dispatch-capability-publish forgesworn-bray-33eb25e/src/dispatch/tools.ts :301
- dispatch-capability-discover forgesworn-bray-33eb25e/src/dispatch/tools.ts :329
- dispatch-capability-read forgesworn-bray-33eb25e/src/dispatch/tools.ts :347
- dispatch-propose forgesworn-bray-33eb25e/src/dispatch/tools.ts :367
- handler-publish forgesworn-bray-33eb25e/src/handler/tools.ts :11
- handler-discover forgesworn-bray-33eb25e/src/handler/tools.ts :39
- whoami forgesworn-bray-33eb25e/src/identity/tools.ts :38
- identity-create forgesworn-bray-33eb25e/src/identity/tools.ts :47
- identity-derive forgesworn-bray-33eb25e/src/identity/tools.ts :57
- identity-derive-persona forgesworn-bray-33eb25e/src/identity/tools.ts :74
- identity-switch forgesworn-bray-33eb25e/src/identity/tools.ts :91
- identity-list forgesworn-bray-33eb25e/src/identity/tools.ts :114
- identity-prove forgesworn-bray-33eb25e/src/identity/tools.ts :125
- identity-backup-shamir forgesworn-bray-33eb25e/src/identity/tools.ts :141
- identity-restore-shamir forgesworn-bray-33eb25e/src/identity/tools.ts :170
- identity-backup forgesworn-bray-33eb25e/src/identity/tools.ts :194
- identity-restore forgesworn-bray-33eb25e/src/identity/tools.ts :213
- identity-migrate forgesworn-bray-33eb25e/src/identity/tools.ts :229
- identity-accept-migration forgesworn-bray-33eb25e/src/identity/tools.ts :244
- nip05-lookup forgesworn-bray-33eb25e/src/identity/tools.ts :258
- nip05-verify forgesworn-bray-33eb25e/src/identity/tools.ts :271
- nip05-relays forgesworn-bray-33eb25e/src/identity/tools.ts :285
- marketplace-discover forgesworn-bray-33eb25e/src/marketplace/tools.ts :33
- marketplace-inspect forgesworn-bray-33eb25e/src/marketplace/tools.ts :59
- marketplace-search forgesworn-bray-33eb25e/src/marketplace/tools.ts :84
- marketplace-reputation forgesworn-bray-33eb25e/src/marketplace/tools.ts :107
- marketplace-compare forgesworn-bray-33eb25e/src/marketplace/tools.ts :125
- marketplace-probe forgesworn-bray-33eb25e/src/marketplace/tools.ts :160
- marketplace-pay forgesworn-bray-33eb25e/src/marketplace/tools.ts :176
- marketplace-call forgesworn-bray-33eb25e/src/marketplace/tools.ts :233
- marketplace-announce forgesworn-bray-33eb25e/src/marketplace/tools.ts :254
- marketplace-update forgesworn-bray-33eb25e/src/marketplace/tools.ts :296
- marketplace-retire forgesworn-bray-33eb25e/src/marketplace/tools.ts :335
- marketplace-credentials-clear forgesworn-bray-33eb25e/src/marketplace/tools.ts :358
- listing-create forgesworn-bray-33eb25e/src/marketplace/tools.ts :371
- listing-read forgesworn-bray-33eb25e/src/marketplace/tools.ts :406
- listing-search forgesworn-bray-33eb25e/src/marketplace/tools.ts :429
- listing-close forgesworn-bray-33eb25e/src/marketplace/tools.ts :447
- label-create forgesworn-bray-33eb25e/src/moderation/tools.ts :31
- label-self forgesworn-bray-33eb25e/src/moderation/tools.ts :57
- label-read forgesworn-bray-33eb25e/src/moderation/tools.ts :80
- label-search forgesworn-bray-33eb25e/src/moderation/tools.ts :101
- label-remove forgesworn-bray-33eb25e/src/moderation/tools.ts :120
- list-mute forgesworn-bray-33eb25e/src/moderation/tools.ts :140
- list-mute-read forgesworn-bray-33eb25e/src/moderation/tools.ts :163
- list-check-muted forgesworn-bray-33eb25e/src/moderation/tools.ts :173
- list-pin forgesworn-bray-33eb25e/src/moderation/tools.ts :197
- list-pin-read forgesworn-bray-33eb25e/src/moderation/tools.ts :215
- list-followset-create forgesworn-bray-33eb25e/src/moderation/tools.ts :229
- list-followset-manage forgesworn-bray-33eb25e/src/moderation/tools.ts :253
- list-followset-read forgesworn-bray-33eb25e/src/moderation/tools.ts :276
- list-bookmark forgesworn-bray-33eb25e/src/moderation/tools.ts :293
- list-bookmark-read forgesworn-bray-33eb25e/src/moderation/tools.ts :319
- moderation-filter forgesworn-bray-33eb25e/src/moderation/tools.ts :338
- privacy-commit forgesworn-bray-33eb25e/src/privacy/tools.ts :21
- privacy-open forgesworn-bray-33eb25e/src/privacy/tools.ts :34
- privacy-prove-range forgesworn-bray-33eb25e/src/privacy/tools.ts :51
- privacy-verify-range forgesworn-bray-33eb25e/src/privacy/tools.ts :67
- privacy-prove-age forgesworn-bray-33eb25e/src/privacy/tools.ts :85
- privacy-verify-age forgesworn-bray-33eb25e/src/privacy/tools.ts :100
- privacy-prove-threshold forgesworn-bray-33eb25e/src/privacy/tools.ts :117
- privacy-verify-threshold forgesworn-bray-33eb25e/src/privacy/tools.ts :132
- privacy-publish-proof forgesworn-bray-33eb25e/src/privacy/tools.ts :149
- privacy-read-proof forgesworn-bray-33eb25e/src/privacy/tools.ts :169
- relay-discover forgesworn-bray-33eb25e/src/relay/intelligence-tools.ts :14
- relay-nip-search forgesworn-bray-33eb25e/src/relay/intelligence-tools.ts :30
- relay-compare forgesworn-bray-33eb25e/src/relay/intelligence-tools.ts :50
- relay-diversity forgesworn-bray-33eb25e/src/relay/intelligence-tools.ts :66
- relay-recommend forgesworn-bray-33eb25e/src/relay/intelligence-tools.ts :79
- relay-list forgesworn-bray-33eb25e/src/relay/tools.ts :14
- relay-set forgesworn-bray-33eb25e/src/relay/tools.ts :26
- relay-add forgesworn-bray-33eb25e/src/relay/tools.ts :46
- relay-query forgesworn-bray-33eb25e/src/relay/tools.ts :60
- relay-info forgesworn-bray-33eb25e/src/relay/tools.ts :121
- relay-count forgesworn-bray-33eb25e/src/relay/tools.ts :134
- cast-spell forgesworn-bray-33eb25e/src/relay/tools.ts :193
- relay-auth forgesworn-bray-33eb25e/src/relay/tools.ts :207
- safety-configure forgesworn-bray-33eb25e/src/safety/tools.ts :23
- safety-activate forgesworn-bray-33eb25e/src/safety/tools.ts :40
- canary-session-create forgesworn-bray-33eb25e/src/safety/tools.ts :60
- canary-session-current forgesworn-bray-33eb25e/src/safety/tools.ts :86
- canary-session-verify forgesworn-bray-33eb25e/src/safety/tools.ts :101
- canary-group-create forgesworn-bray-33eb25e/src/safety/tools.ts :121
- canary-group-join forgesworn-bray-33eb25e/src/safety/tools.ts :148
- canary-group-current forgesworn-bray-33eb25e/src/safety/tools.ts :171
- canary-group-verify forgesworn-bray-33eb25e/src/safety/tools.ts :186
- canary-group-members forgesworn-bray-33eb25e/src/safety/tools.ts :203
- canary-beacon-create forgesworn-bray-33eb25e/src/safety/tools.ts :220
- canary-beacon-check forgesworn-bray-33eb25e/src/safety/tools.ts :238
- canary-duress-signal forgesworn-bray-33eb25e/src/safety/tools.ts :260
- canary-duress-detect forgesworn-bray-33eb25e/src/safety/tools.ts :279
- signet-badge forgesworn-bray-33eb25e/src/signet/tools.ts :16
- signet-vouch forgesworn-bray-33eb25e/src/signet/tools.ts :28
- signet-credentials forgesworn-bray-33eb25e/src/signet/tools.ts :42
- signet-policy-check forgesworn-bray-33eb25e/src/signet/tools.ts :54
- signet-policy-set forgesworn-bray-33eb25e/src/signet/tools.ts :67
- signet-verifiers forgesworn-bray-33eb25e/src/signet/tools.ts :83
- signet-challenge forgesworn-bray-33eb25e/src/signet/tools.ts :95
- social-post forgesworn-bray-33eb25e/src/social/tools.ts :59
- social-reply forgesworn-bray-33eb25e/src/social/tools.ts :76
- social-react forgesworn-bray-33eb25e/src/social/tools.ts :98
- social-delete forgesworn-bray-33eb25e/src/social/tools.ts :116
- social-repost forgesworn-bray-33eb25e/src/social/tools.ts :130
- social-profile-get forgesworn-bray-33eb25e/src/social/tools.ts :145
- social-profile-set forgesworn-bray-33eb25e/src/social/tools.ts :162
- dm-send forgesworn-bray-33eb25e/src/social/tools.ts :228
- dm-read forgesworn-bray-33eb25e/src/social/tools.ts :258
- dm-by-name forgesworn-bray-33eb25e/src/social/tools.ts :273
- dm-conversation forgesworn-bray-33eb25e/src/social/tools.ts :325
- social-notifications forgesworn-bray-33eb25e/src/social/tools.ts :343
- social-feed forgesworn-bray-33eb25e/src/social/tools.ts :359
- feed-by-name forgesworn-bray-33eb25e/src/social/tools.ts :376
- profile-by-name forgesworn-bray-33eb25e/src/social/tools.ts :420
- contacts-get forgesworn-bray-33eb25e/src/social/tools.ts :461
- contacts-search forgesworn-bray-33eb25e/src/social/tools.ts :474
- contacts-follow forgesworn-bray-33eb25e/src/social/tools.ts :490
- contacts-unfollow forgesworn-bray-33eb25e/src/social/tools.ts :515
- nip-publish forgesworn-bray-33eb25e/src/social/tools.ts :538
- nip-read forgesworn-bray-33eb25e/src/social/tools.ts :554
- blossom-upload forgesworn-bray-33eb25e/src/social/tools.ts :571
- blossom-list forgesworn-bray-33eb25e/src/social/tools.ts :584
- blossom-delete forgesworn-bray-33eb25e/src/social/tools.ts :596
- blossom-mirror forgesworn-bray-33eb25e/src/social/tools.ts :608
- blossom-check forgesworn-bray-33eb25e/src/social/tools.ts :622
- blossom-discover forgesworn-bray-33eb25e/src/social/tools.ts :635
- blossom-verify forgesworn-bray-33eb25e/src/social/tools.ts :646
- blossom-repair forgesworn-bray-33eb25e/src/social/tools.ts :658
- blossom-usage forgesworn-bray-33eb25e/src/social/tools.ts :671
- blossom-servers forgesworn-bray-33eb25e/src/social/tools.ts :683
- group-info forgesworn-bray-33eb25e/src/social/tools.ts :700
- group-chat forgesworn-bray-33eb25e/src/social/tools.ts :712
- group-send forgesworn-bray-33eb25e/src/social/tools.ts :724
- group-members forgesworn-bray-33eb25e/src/social/tools.ts :736
- group-create forgesworn-bray-33eb25e/src/social/tools.ts :749
- group-update forgesworn-bray-33eb25e/src/social/tools.ts :763
- group-add-user forgesworn-bray-33eb25e/src/social/tools.ts :777
- group-remove-user forgesworn-bray-33eb25e/src/social/tools.ts :789
- group-set-roles forgesworn-bray-33eb25e/src/social/tools.ts :800
- article-publish forgesworn-bray-33eb25e/src/social/tools.ts :816
- article-read forgesworn-bray-33eb25e/src/social/tools.ts :842
- article-list forgesworn-bray-33eb25e/src/social/tools.ts :858
- search-notes forgesworn-bray-33eb25e/src/social/tools.ts :876
- search-profiles forgesworn-bray-33eb25e/src/social/tools.ts :891
- hashtag-feed forgesworn-bray-33eb25e/src/social/tools.ts :904
- calendar-create forgesworn-bray-33eb25e/src/social/tools.ts :920
- calendar-read forgesworn-bray-33eb25e/src/social/tools.ts :958
- calendar-rsvp forgesworn-bray-33eb25e/src/social/tools.ts :980
- badge-create forgesworn-bray-33eb25e/src/social/tools.ts :996
- badge-award forgesworn-bray-33eb25e/src/social/tools.ts :1012
- badge-accept forgesworn-bray-33eb25e/src/social/tools.ts :1029
- badge-list forgesworn-bray-33eb25e/src/social/tools.ts :1045
- community-create forgesworn-bray-33eb25e/src/social/tools.ts :1061
- community-feed forgesworn-bray-33eb25e/src/social/tools.ts :1081
- community-post forgesworn-bray-33eb25e/src/social/tools.ts :1095
- community-approve forgesworn-bray-33eb25e/src/social/tools.ts :1108
- community-list forgesworn-bray-33eb25e/src/social/tools.ts :1125
- wiki-publish forgesworn-bray-33eb25e/src/social/tools.ts :1139
- wiki-read forgesworn-bray-33eb25e/src/social/tools.ts :1163
- wiki-list forgesworn-bray-33eb25e/src/social/tools.ts :1184
- post-schedule forgesworn-bray-33eb25e/src/social/tools.ts :1206
- post-queue-list forgesworn-bray-33eb25e/src/social/tools.ts :1227
- publish-event forgesworn-bray-33eb25e/src/social/tools.ts :1240
- post-queue-cancel forgesworn-bray-33eb25e/src/social/tools.ts :1261
- trust-attest forgesworn-bray-33eb25e/src/trust/tools.ts :28
- trust-claim forgesworn-bray-33eb25e/src/trust/tools.ts :55
- trust-read forgesworn-bray-33eb25e/src/trust/tools.ts :83
- trust-verify forgesworn-bray-33eb25e/src/trust/tools.ts :107
- trust-revoke forgesworn-bray-33eb25e/src/trust/tools.ts :120
- trust-request forgesworn-bray-33eb25e/src/trust/tools.ts :140
- trust-request-list forgesworn-bray-33eb25e/src/trust/tools.ts :160
- trust-proof-publish forgesworn-bray-33eb25e/src/trust/tools.ts :170
- trust-ring-prove forgesworn-bray-33eb25e/src/trust/tools.ts :187
- trust-ring-verify forgesworn-bray-33eb25e/src/trust/tools.ts :204
- trust-spoken-challenge forgesworn-bray-33eb25e/src/trust/tools.ts :217
- trust-spoken-verify forgesworn-bray-33eb25e/src/trust/tools.ts :232
- trust-attest-parse forgesworn-bray-33eb25e/src/trust/tools.ts :251
- trust-attest-filter forgesworn-bray-33eb25e/src/trust/tools.ts :267
- trust-attest-temporal forgesworn-bray-33eb25e/src/trust/tools.ts :287
- trust-attest-chain forgesworn-bray-33eb25e/src/trust/tools.ts :317
- trust-attest-check-revoked forgesworn-bray-33eb25e/src/trust/tools.ts :335
- trust-ring-lsag-sign forgesworn-bray-33eb25e/src/trust/tools.ts :355
- trust-ring-lsag-verify forgesworn-bray-33eb25e/src/trust/tools.ts :378
- trust-ring-key-image forgesworn-bray-33eb25e/src/trust/tools.ts :392
- trust-spoken-directional forgesworn-bray-33eb25e/src/trust/tools.ts :407
- trust-spoken-encode forgesworn-bray-33eb25e/src/trust/tools.ts :427
- my-tool forgesworn-bray-33eb25e/src/util/schema.ts :24
- decode forgesworn-bray-33eb25e/src/util/tools.ts :29
- encode-npub forgesworn-bray-33eb25e/src/util/tools.ts :40
- encode-note forgesworn-bray-33eb25e/src/util/tools.ts :48
declared dependencies 22
- @forgesworn/range-proof@^2.0.1
- @forgesworn/ring-sig@^3.0.0
- @forgesworn/shamir-words@^1.0.4
- @modelcontextprotocol/ext-apps@^1.3.1
- @modelcontextprotocol/sdk@^1.27.1
- canary-kit@^2.6.2
- dominion-protocol@^1.0.0
- nostr-attestations@^2.5.4
- nostr-tools@^2.23.3
- nostr-veil@^0.29.0
- nsec-tree@^1.4.2
- signet-protocol@^1.1.0
- socks-proxy-agent@^10.0.0
- spoken-token@^2.0.3
- undici@^7.25.0
- ws@^8.20.0
- zod@^4.3.6
- @types/node@^25.5.0
- @types/ws@^8.18.1
- @vitest/coverage-v8@^4.1.1
- typescript@^6.0.2
- vitest@^4.1.1