nostr

nostr is a skill for Codex from DiegoYegros/nostr-mcp. It costs 57 tokens per session (985 once invoked), scanned A, original, MIT.

A full client for Nostr, a decentralized network for public notes and conversations. It can also work with signed accounts for actions such as posting, messaging, and sending Lightning payments.

In plain words
What is it for?
Reading profiles, notes, threads, and searches; posting or replying; publishing articles; managing drafts; sending encrypted messages; uploading media; and sending Lightning zaps.
Why use it?
It lets a coding agent read and manage Nostr activity through dedicated tools instead of handling relays, threads, media, and account actions manually.

Skill for Codex

Written for Codex: agents/openai.yaml present.

Good fit Reading profiles, notes, threads, and searches; posting or replying; publishing articles; managing drafts; sending encrypted messages; uploading media; and sending Lightning zaps.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/diegoyegros/nostr-mcp/nostr
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add DiegoYegros/nostr-mcp --skill nostr
Clone the repo
git clone --depth 1 https://github.com/DiegoYegros/nostr-mcp

Made for: Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for nostr

README.md
[![agentmods](https://agentmods.dev/badge/skills/diegoyegros/nostr-mcp/nostr/github.svg)](https://agentmods.dev/skills/diegoyegros/nostr-mcp/nostr)
Your own site
<a href="https://agentmods.dev/skills/diegoyegros/nostr-mcp/nostr"><img src="https://agentmods.dev/badge/skills/diegoyegros/nostr-mcp/nostr/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for nostr

Your own site · 80×15
<a href="https://agentmods.dev/skills/diegoyegros/nostr-mcp/nostr"><img src="https://agentmods.dev/badge/skills/diegoyegros/nostr-mcp/nostr.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 57 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 985 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00057 $0.00985
Opus 5 $0.00028 $0.00492
Sonnet 5 $0.00011 $0.00197
Haiku 4.5 $0.00006 $0.00098

Measured 10d ago against content hash f14bf8a5cf40, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

nostr scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/nostr/SKILL.md · 45 lines

How it starts

The opening of the file, as written. The whole thing — 45 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Nostr

Use the bundled Nostr MCP server to read public Nostr data and, when a signer is configured, to act on Nostr.

Workflow

  1. Resolve an identifier first when its type or relay hints are unclear (nostr_resolve_identity, nostr_resolve_handle for NIP-05 handles like [email protected]).
  2. Use the most specific tool: nostr_get_profile, nostr_get_event, nostr_get_thread (full conversation), nostr_get_engagement (engagement totals), nostr_query_notes, or nostr_search_notes.
  3. Check nostr_whoami before write operations to see which capabilities are enabled for the session.
  4. Preserve relay provenance and mention partial relay failures when reporting results.
  5. Treat an empty result as "not found on the queried relays," not proof that nothing exists anywhere on Nostr.

Writing

  • Post with nostr_post_note; pass reply_to to reply, and threading tags get built automatically (NIP-10 for notes, NIP-22 comments for articles and other kinds). Attach uploaded media via attachments (imeta tags are built for you).
  • Long-form goes to nostr_publish_article (markdown, kind 30023). Republishing with the same slug edits it.
  • Save unfinished work with nostr_save_draft, then publish later with nostr_publish_draft.
  • Reactions: "+" like, "-" dislike, or a single emoji. Deletion is best-effort and only works on your own events.
  • Zaps need a configured wallet (nostr_wallet_status). Without one, use nostr_zap_invoice and give the user the Lightning invoice to pay manually. Always confirm amounts with the user before nostr_zap.

Media uploads

  1. Call the exact Nostr tool named nostr_whoami in the runtime tool catalog (a host may display a qualified ID such as mcp__nostr__nostr_whoami). Require capabilities.mediaUpload to be true before uploading.
  2. Call the exact catalog tool named nostr_upload_media (for example, mcp__nostr__nostr_upload_media when that is the host-visible ID) with mime_type and exactly one data source.
  3. Use file_path only for a local file inside a server allowlisted NOSTR_MEDIA_UPLOAD_DIRS directory. Otherwise read the bytes without exposing secrets and send canonical base64 as data_base64.
  4. Map the upload result into the destination tool:
    • For nostr_post_note, add one attachments item with url: result.url, mime_type: result.mimeType, size: result.size, and reuse the user-provided sanitized alt as alt when present. nostr_post_note builds the NIP-92 imeta tag itself.
    • For nostr_publish_article, pass only image: result.url; it has no attachment or imeta input.
  5. imetaTag is returned metadata for clients that directly build Nostr events; do not pass it as an MCP tool input.

Read the full file on GitHub · 45 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 45 lines · 57 tokens per session scan A f14bf8a5cf40

Subscribe to this mod's changes

nostr is a skill published in the GitHub repository DiegoYegros/nostr-mcp (0 stars, last pushed 20d ago), licensed MIT. It adds 57 tokens to every session and 985 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.