Skip to main content
Glama

Nostr MCP Server

⚠️ This project is no longer maintained. It has been superseded by nostr-agent-interface — a newer, improved version with additional Blossom file storage support and an expanded tool set.

For the full MCP server with 48 tools, see:
https://github.com/AustinKelsay/nostr-agent-interface


What changed?

The nostr-agent-interface (NAI) builds on this project and adds:

  • Blossom file storage — 8 new tools for uploading, downloading, listing, deleting, and mirroring blobs

  • Expanded tool count — 48 MCP tools covering profile, notes, relays, DMs, zaps, and now blob storage

  • Cleaner architecture — improved module organization and signing via snstr

  • Built-in budget monitoring — optional Plaid-connected budget tracking for personal finance

Migrating

If you're using nostr-mcp-server, switch to:

npm install -g nostr-agent-interface

Or point to the source:

git clone https://github.com/AustinKelsay/nostr-agent-interface.git
cd nostr-agent-interface
npm install && npm run build

Old tool count

This repo contains 40 tools (documented in the git history).

The active repo (nostr-agent-interface) has 48 tools.

Available Tools

18 tools
analyzeNip19C

Analyze any NIP-19 entity or hex string to understand its type and contents

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesThe NIP-19 entity or hex string to analyze

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool analyzes to 'understand its type and contents,' implying a read-only operation that returns metadata, but doesn't specify output format, error handling, or performance characteristics. For a tool with no annotations, this is a significant gap, as it lacks details on what 'analyze' entails beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose without unnecessary words. Every part earns its place by specifying the action, resource, and outcome, making it easy to parse and understand quickly. There's no redundancy or fluff, which is ideal for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (analyzing NIP-19 entities, which may involve parsing and validation), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'analyze' returns, such as structured data or error messages, nor does it cover edge cases like invalid inputs. For a tool with no structured output documentation, this leaves significant gaps for an AI agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the parameter 'input' documented as 'The NIP-19 entity or hex string to analyze.' The description adds no additional meaning beyond this, such as examples, constraints, or formatting details. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Analyze any NIP-19 entity or hex string to understand its type and contents.' It specifies the verb ('analyze') and resource ('NIP-19 entity or hex string'), and distinguishes it from siblings like 'convertNip19' or 'searchNips' by focusing on analysis rather than conversion or searching. However, it doesn't explicitly differentiate from all siblings, such as 'getKind1Notes' or 'getProfile', which might also involve analysis of NIP-19 data, so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, and fails to differentiate from siblings like 'convertNip19' or 'searchNips' in usage scenarios. For example, it doesn't clarify if this is for debugging, validation, or initial exploration, leaving the agent to infer usage based on the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convertNip19B

Convert any NIP-19 entity (npub, nsec, note, nprofile, nevent, naddr) to another format

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesThe NIP-19 entity or hex string to convert
targetTypeYesThe target format to convert to
relaysNoOptional relay URLs for complex entities (nprofile, nevent, naddr)
authorNoOptional author pubkey (hex format) for nevent/naddr
kindNoOptional event kind for nevent/naddr
identifierNoRequired identifier for naddr conversion

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the conversion action but lacks details on error handling (e.g., invalid inputs), performance (e.g., rate limits), side effects, or output format. For a tool with 6 parameters and no annotations, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose with no wasted words. It lists all relevant entity types concisely, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits, usage context, and output expectations. While the schema covers parameters, the description fails to provide sufficient context for safe and effective use, especially for a conversion tool with multiple input/output types.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no parameter-specific information beyond implying general conversion semantics. With high schema coverage, the baseline is 3, as the description doesn't compensate but also doesn't detract from the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'convert' and specifies the resource as 'any NIP-19 entity' with explicit examples (npub, nsec, note, nprofile, nevent, naddr). It distinguishes from siblings like analyzeNip19 (analysis vs conversion) and createKeypair/createNote (creation vs conversion), making the purpose specific and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing specific inputs for certain conversions), exclusions, or comparisons to sibling tools like analyzeNip19. Without such context, the agent must infer usage from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createKeypairC

Generate a new Nostr keypair

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoFormat to return keys in: hex only, npub only, or bothboth

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool generates a keypair but doesn't describe what that entails: whether it returns both public and private keys, stores them somewhere, requires authentication, has rate limits, or what format the output takes. For a security-sensitive operation, this lack of detail is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized for a simple tool with one optional parameter, and every word earns its place by conveying essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of key generation (a security-sensitive operation) and the lack of both annotations and output schema, the description is insufficient. It doesn't explain what a keypair includes, how keys are returned, security implications, or error conditions. For a tool with no structured output documentation, the description should provide more context about the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'format' parameter fully documented in the schema itself. The description adds no parameter information beyond what's in the schema, so it meets the baseline of 3. It doesn't compensate for any gaps because there are none in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Generate') and resource ('new Nostr keypair'), making the purpose immediately understandable. It distinguishes from siblings like 'createNote' or 'createProfile' by focusing on cryptographic key generation rather than content creation. However, it doesn't specify what a Nostr keypair consists of (public/private keys), which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a keypair for other operations), compare to sibling tools like 'signNote' (which might require a keypair), or indicate typical use cases (e.g., user onboarding). The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createNoteC

Create a new kind 1 note event (unsigned)

ParametersJSON Schema
NameRequiredDescriptionDefault
privateKeyYesPrivate key to sign the note with (hex format or nsec format)
contentYesContent of the note to create
tagsNoOptional tags to include with the note

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but provides minimal behavioral context. It mentions 'unsigned' which hints at authentication behavior, but doesn't disclose what happens after creation (e.g., where the note is stored/published), rate limits, or error conditions. For a creation tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with the core action. Could be slightly more informative given the tool's complexity, but efficiently states the essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after creation (e.g., returns a note ID, publishes to network), doesn't mention prerequisites or side effects, and lacks context about the 'kind 1' specification for users unfamiliar with Nostr terminology.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'new kind 1 note event', specifying it's 'unsigned'. This distinguishes it from signing tools like signNote, but doesn't explicitly differentiate from similar creation tools like postNote or publishNote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like postNote, publishNote, or postAnonymousNote. The description mentions 'unsigned' but doesn't explain when unsigned notes are appropriate versus signed alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

createProfileC

Create a new Nostr profile (kind 0 event)

ParametersJSON Schema
NameRequiredDescriptionDefault
privateKeyYesPrivate key to sign the profile with (hex format or nsec format)
nameNoDisplay name for the profile
aboutNoAbout/bio text for the profile
pictureNoURL to profile picture
nip05NoNIP-05 identifier (like email@domain.com)
lud16NoLightning address for receiving payments
lud06NoLNURL for receiving payments
websiteNoPersonal website URL
relaysNoOptional list of relays to publish to

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a profile but doesn't explain what happens after creation (e.g., where the profile is stored, whether it's published to relays by default, or what the return value is). For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without unnecessary elaboration. It's appropriately sized and front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain the behavioral consequences (e.g., whether the profile is published, what the return value looks like) or provide usage context. The high parameter coverage doesn't compensate for the lack of operational transparency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 9 parameters. The description adds no additional parameter semantics beyond what's in the schema, but the baseline score of 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new Nostr profile') and specifies the resource type ('kind 0 event'), which distinguishes it from sibling tools like createNote or updateProfile. However, it doesn't explicitly differentiate from createKeypair which creates keys rather than a profile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like updateProfile or createKeypair. It doesn't mention prerequisites (e.g., needing a private key) or contextual constraints, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getAllZapsB

Get all zaps (sent and received) for a public key

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesPublic key of the Nostr user (hex format or npub format)
limitNoMaximum number of total zaps to fetch
relaysNoOptional list of relays to query
validateReceiptsNoWhether to validate zap receipts according to NIP-57
debugNoEnable verbose debug logging

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions fetching zaps but lacks details on permissions needed, rate limits, error handling, or what 'get all' entails (e.g., pagination, completeness). The description is minimal and doesn't compensate for the lack of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence contributes directly to understanding the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 5 parameters, the description is insufficient. It doesn't explain return values, behavioral traits, or usage nuances, leaving significant gaps for a tool with moderate complexity and no structured support.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond implying the pubkey parameter, aligning with the baseline score when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get all zaps') and resource ('for a public key'), specifying both sent and received zaps. It distinguishes from siblings like getReceivedZaps and getSentZaps by covering both types, though it doesn't explicitly name these alternatives in the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching zaps associated with a public key, but doesn't explicitly state when to use this tool versus getReceivedZaps or getSentZaps. No guidance on prerequisites, exclusions, or alternative scenarios is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getKind1NotesC

Get text notes (kind 1) by public key

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesPublic key of the Nostr user (hex format or npub format)
limitNoMaximum number of notes to fetch
relaysNoOptional list of relays to query

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It doesn't describe what 'Get' entails (e.g., querying Nostr relays, potential rate limits, authentication needs, or response format), leaving critical behavioral traits unspecified for a tool that interacts with a decentralized network.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It avoids redundancy and wastes no space, making it highly concise and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (fetching data from Nostr relays with 3 parameters) and lack of annotations and output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral nuances like relay interaction, which are essential for effective agent use in this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter semantics beyond what the input schema provides, as schema description coverage is 100% with clear documentation for pubkey, limit, and relays. This meets the baseline score of 3, where the schema handles parameter documentation adequately without extra value from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('text notes (kind 1) by public key'), making the purpose immediately understandable. It specifies the note type (kind 1) and target (public key), though it doesn't explicitly differentiate from sibling tools like getLongFormNotes or getProfile, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like getLongFormNotes (for kind 30023) or getProfile (for kind 0), nor does it specify prerequisites or exclusions, leaving the agent to infer usage from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getLongFormNotesC

Get long-form notes (kind 30023) by public key

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesPublic key of the Nostr user (hex format or npub format)
limitNoMaximum number of notes to fetch
relaysNoOptional list of relays to query

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions the note kind (30023) but doesn't disclose whether this is a read-only operation, how it handles missing data, rate limits, authentication needs, or what the return format looks like. For a query tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with zero wasted words. Every element ('Get long-form notes', 'kind 30023', 'by public key') contributes essential information, and it's front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a query tool with 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what 'long-form notes' are beyond the kind number, doesn't describe the return format or structure, and provides no context about error handling or typical use cases. The technical detail about note kind is helpful but doesn't compensate for the missing behavioral and output information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all three parameters (pubkey, limit, relays). The description adds no additional parameter semantics beyond what's already in the schema descriptions, such as format details or usage examples. Baseline 3 is appropriate when the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('long-form notes') with specific filtering criteria ('by public key') and technical detail ('kind 30023'). It distinguishes from siblings like getKind1Notes (different note kind) and getProfile (different resource type), though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives is provided. The description implies usage for retrieving long-form notes from a specific user, but doesn't mention when to choose this over other note-fetching tools like getKind1Notes or search functions, nor does it discuss prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getProfileB

Get a Nostr profile by public key

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesPublic key of the Nostr user (hex format or npub format)
relaysNoOptional list of relays to query

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't specify whether this is a local lookup, network query, or cached retrieval. It doesn't mention performance characteristics, error conditions, authentication requirements, or what happens when a profile doesn't exist. For a tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's front-loaded with the essential information ('Get a Nostr profile') and includes the key constraint ('by public key'). Every word earns its place, making this an excellent example of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with 2 parameters and 100% schema coverage, the description is minimally adequate. However, with no output schema and no annotations, the description doesn't address what the return value contains (profile fields, format, structure) or potential behavioral aspects. Given the tool's relative simplicity, the description meets basic requirements but leaves room for improvement in explaining results and operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (pubkey and relays). The description mentions 'by public key' which aligns with the pubkey parameter but adds no additional semantic context beyond what the schema provides. With complete schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance parameter understanding but doesn't need to compensate for gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('a Nostr profile by public key'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'createProfile' or 'updateProfile', but the verb 'Get' versus 'create'/'update' provides implicit distinction. The description is specific enough to understand what the tool does without being tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'createProfile', 'updateProfile', and various note/zap retrieval tools, there's no indication of when this profile retrieval tool is appropriate versus other profile-related operations or when to use it in combination with other tools. The description is purely functional without contextual usage information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getReceivedZapsC

Get zaps received by a public key

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesPublic key of the Nostr user (hex format or npub format)
limitNoMaximum number of zaps to fetch
relaysNoOptional list of relays to query
validateReceiptsNoWhether to validate zap receipts according to NIP-57
debugNoEnable verbose debug logging

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose whether this is a read-only operation, potential rate limits, authentication needs, error conditions, or what the output format looks like (e.g., list of zaps with metadata).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by directly stating the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain return values, error handling, or behavioral traits like idempotency or side effects, leaving significant gaps for an AI agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond implying 'pubkey' is required, which is already clear from the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('zaps received by a public key'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'getAllZaps' or 'getSentZaps', which would require mentioning it's specifically for received zaps for a single user versus other list/query variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'getAllZaps' or 'getSentZaps'. It doesn't mention prerequisites, such as needing a valid public key, or contextual factors like performance implications of optional parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getSentZapsC

Get zaps sent by a public key

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesPublic key of the Nostr user (hex format or npub format)
limitNoMaximum number of zaps to fetch
relaysNoOptional list of relays to query
validateReceiptsNoWhether to validate zap receipts according to NIP-57
debugNoEnable verbose debug logging

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure but offers minimal information. It states what the tool does but doesn't describe return format, error conditions, rate limits, authentication needs, or whether this is a read-only operation. The description is functional but lacks important behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a tool with good schema documentation and gets straight to the point with zero wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'zaps' are in the Nostr context, what format the results will be in, or any behavioral characteristics. The agent would need to rely heavily on the schema and potentially external knowledge to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all 5 parameters. The description doesn't add any parameter-specific information beyond what's in the schema, nor does it explain parameter interactions or provide usage examples. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('zaps sent by a public key'), making the purpose immediately understandable. It distinguishes from sibling tools like 'getReceivedZaps' by specifying 'sent' zaps, though it doesn't explicitly mention this distinction in the description text itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'getAllZaps' or 'getReceivedZaps'. There's no mention of prerequisites, context, or comparison with sibling tools, leaving the agent to infer usage scenarios from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postAnonymousNoteA

Post an anonymous note to the Nostr network using a temporary keypair

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesContent of the note to post
relaysNoOptional list of relays to publish to
tagsNoOptional tags to include with the note

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions 'anonymous' and 'temporary keypair', which hints at privacy and ephemeral authentication, but does not disclose critical behavioral traits like whether the note is publicly visible, if it can be deleted, rate limits, or error handling. This is a significant gap for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Post an anonymous note') and adds necessary context ('to the Nostr network using a temporary keypair'). Every word earns its place with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation with anonymity aspects), no annotations, and no output schema, the description is incomplete. It lacks details on behavioral outcomes, error cases, or what the tool returns, leaving gaps for an AI agent to understand full usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (content, relays, tags) with descriptions. The description does not add meaning beyond what the schema provides, such as explaining tag formats or relay behavior. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Post an anonymous note') and the target resource ('to the Nostr network'), specifying the method ('using a temporary keypair'). It distinguishes itself from siblings like 'postNote' and 'publishNote' by emphasizing anonymity and temporary keypair usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for anonymous posting, suggesting when to use it (for anonymity) but does not explicitly state when not to use it or name alternatives like 'postNote' for non-anonymous posting. It provides clear context but lacks explicit exclusions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postNoteC

Post a note using an existing private key (authenticated posting)

ParametersJSON Schema
NameRequiredDescriptionDefault
privateKeyYesPrivate key to sign the note with (hex format or nsec format)
contentYesContent of the note to post
tagsNoOptional tags to include with the note
relaysNoOptional list of relays to publish to

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions authentication ('authenticated posting') but doesn't describe what happens after posting (e.g., where the note goes, success/failure responses, rate limits, or error conditions). For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core functionality without unnecessary words. It's appropriately sized and front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'posting' entails (e.g., to a blockchain, database, or network), what the return value might be, or potential side effects. Given the complexity of cryptographic operations implied by private key usage, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 4 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema (e.g., format details for privateKey, tag structure examples, or relay behavior). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Post a note') and specifies authentication method ('using an existing private key'), which distinguishes it from sibling tools like 'postAnonymousNote' and 'publishNote'. However, it doesn't explicitly differentiate from 'createNote' or 'signNote', which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'authenticated posting' which implies this tool requires authentication, but provides no explicit guidance on when to use this vs. alternatives like 'postAnonymousNote' or 'publishNote'. No context about prerequisites, alternatives, or exclusions is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publishNoteC

Publish a signed note to Nostr relays

ParametersJSON Schema
NameRequiredDescriptionDefault
signedNoteYesSigned note event to publish
relaysNoOptional list of relays to publish to

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool publishes to relays but doesn't describe what happens during publishing (e.g., network behavior, error handling, confirmation of success/failure). For a network operation with mutation implications, this leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized and front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after publishing (success indicators, error responses), network behavior, or how this differs from similar sibling tools. Given the complexity of publishing to distributed relays, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema. The baseline of 3 is appropriate when the schema does the heavy lifting for parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('publish') and target ('a signed note to Nostr relays'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'postNote' or 'postAnonymousNote', which appear to serve similar publishing functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like 'postNote' or 'postAnonymousNote'. The description doesn't mention prerequisites (e.g., needing a signed note from 'signNote') or contextual factors that would help an agent choose between publishing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

searchNipsC

Search through Nostr Implementation Possibilities (NIPs)

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query to find relevant NIPs
limitNoMaximum number of results to return
includeContentNoWhether to include the full content of each NIP in the results

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions searching but doesn't describe the search behavior (e.g., case sensitivity, ranking, pagination), potential errors, rate limits, or authentication needs. This leaves significant gaps for an agent to understand how to use it effectively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized for a simple search tool, though it could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a search tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the search returns (e.g., list of NIPs with metadata), how results are structured, or any behavioral traits, making it inadequate for an agent to fully understand the tool's operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so parameters are well-documented there. The description adds no additional meaning beyond what the schema provides, such as examples of queries or context for 'includeContent'. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool searches through Nostr Implementation Possibilities (NIPs), which is a clear purpose. However, it doesn't specify what kind of search it performs (e.g., full-text, metadata, tags) or how results are returned, and it doesn't distinguish itself from sibling tools like 'getAllZaps' or 'getKind1Notes' that also retrieve NIP-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention any prerequisites, such as needing a specific context or data availability, nor does it compare to sibling tools like 'analyzeNip19' or 'getProfile' that might serve similar purposes in different scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sendAnonymousZapC

Prepare an anonymous zap to a profile or event

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesTarget to zap - can be a pubkey (hex or npub) or an event ID (nevent, note, naddr, or hex)
amountSatsYesAmount to zap in satoshis
commentNoOptional comment to include with the zap
relaysNoOptional list of relays to query

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Prepare an anonymous zap,' implying a creation or sending action, but doesn't clarify if this requires user authentication, what happens after preparation (e.g., is it sent immediately or stored?), or any rate limits. This leaves significant gaps in understanding the tool's behavior and safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core purpose without any wasted words. It's front-loaded with the main action and target, making it easy to grasp quickly. This is an excellent example of conciseness, as every word earns its place in defining the tool's intent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a tool that involves financial transactions (zaps) and anonymity, with no annotations and no output schema, the description is insufficient. It doesn't explain what 'prepare' entails (e.g., does it return a transaction ID or confirmation?), the implications of anonymity, or error handling. For a tool with potential side effects like sending money, more context is needed to ensure safe and correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting all four parameters (target, amountSats, comment, relays) with details like data types and constraints. The description adds no additional semantic information beyond what the schema provides, such as examples or usage tips. Since the schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't enhance parameter understanding but also doesn't detract from it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Prepare an anonymous zap') and the target ('to a profile or event'), which is specific and understandable. However, it doesn't distinguish this tool from sibling tools like 'postAnonymousNote' or 'getAllZaps', which might handle similar concepts of anonymity or zaps, leaving room for confusion about when to choose this specific tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, such as needing authentication or specific contexts, nor does it compare to sibling tools like 'postNote' or 'getReceivedZaps' that might involve similar actions. This lack of context makes it hard for an agent to decide when this is the appropriate choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

signNoteC

Sign a note event with a private key

ParametersJSON Schema
NameRequiredDescriptionDefault
privateKeyYesPrivate key to sign the note with (hex format or nsec format)
noteEventYesUnsigned note event to sign

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool signs a note event but does not explain what happens after signing (e.g., whether it returns a signed event, stores it, or requires further steps), nor does it cover permissions, side effects, or error handling, leaving significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words, making it highly concise and front-loaded. It directly states the tool's purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of signing operations (involving cryptographic keys and event structures), no annotations, and no output schema, the description is insufficient. It does not explain the output (e.g., signed event format), error cases, or integration with other tools, leaving the agent with incomplete context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the parameters (privateKey and noteEvent). The description adds no additional meaning beyond the schema, such as format details or usage examples, but the high coverage justifies the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('sign') and resource ('a note event with a private key'), making the purpose evident. However, it does not differentiate this tool from siblings like 'postNote' or 'publishNote', which might involve signing implicitly, so it lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'postNote' or 'publishNote', which may handle signing internally. The description implies usage for signing notes but offers no context on prerequisites, exclusions, or comparisons to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

updateProfileC

Update an existing Nostr profile (kind 0 event)

ParametersJSON Schema
NameRequiredDescriptionDefault
privateKeyYesPrivate key to sign the profile with (hex format or nsec format)
nameNoDisplay name for the profile
aboutNoAbout/bio text for the profile
pictureNoURL to profile picture
nip05NoNIP-05 identifier (like email@domain.com)
lud16NoLightning address for receiving payments
lud06NoLNURL for receiving payments
websiteNoPersonal website URL
relaysNoOptional list of relays to publish to

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool updates a profile but fails to mention critical aspects like whether it overwrites existing data, requires authentication (implied by privateKey but not stated), or has rate limits. This leaves significant gaps for a mutation tool, scoring a 2.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It is appropriately sized and front-loaded, earning a 5 for zero waste and clear structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with 9 parameters), lack of annotations, and no output schema, the description is insufficient. It doesn't cover behavioral traits, usage context, or return values, making it incomplete for safe and effective agent use, scoring a 2.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, resulting in a baseline score of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('existing Nostr profile'), and specifies the event type ('kind 0 event'), which helps distinguish it from sibling tools like createProfile. However, it doesn't explicitly differentiate from other update-like tools (though none are present in the sibling list), keeping it at a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like createProfile or getProfile, nor does it mention prerequisites (e.g., needing an existing profile) or exclusions. It lacks explicit usage context, scoring a 2 for minimal guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between createNote, postNote, publishNote, and signNote that could cause confusion about the note creation/publishing workflow. Tools like getAllZaps, getReceivedZaps, and getSentZaps are clearly differentiated, and other tools target specific resources or actions.

Naming Consistency3/5

The naming is mixed with camelCase (e.g., analyzeNip19, convertNip19) and snake_case (e.g., get_long_form_notes, post_anonymous_note), and verb styles vary (e.g., 'create', 'get', 'post', 'publish', 'sign'). While readable, it lacks a consistent pattern throughout the set.

Tool Count4/5

With 18 tools, the count is slightly high but reasonable for a Nostr server covering key management, note handling, profiles, zaps, and NIP utilities. It feels comprehensive without being overwhelmingly bloated, though it borders on the upper limit of typical scope.

Completeness5/5

The tool set provides complete coverage for the Nostr domain, including keypair creation, note creation/posting/publishing/signing, profile management (create, get, update), zap handling (send, get all/received/sent), NIP analysis/conversion/search, and anonymous operations. No obvious gaps are present for core workflows.

Maintenance

ActivityNo data
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that allows Claude to interact with Warpcast accounts, enabling actions like posting casts, reading content, searching by keywords, and managing channel interactions through natural language.
    3
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    An extensible Model Context Protocol server that provides standardized access to social platform data (currently Farcaster) and onchain data for LLMs.
    10
    13
    MIT
  • F
    license
    B
    quality
    F
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Bluesky/ATProtocol, providing authentication, timeline access, post creation, and social features like likes and follows.
    2
    21
    49

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AustinKelsay/nostr-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server