Skip to main content
Glama

@powforge/mcp-identity

zekebuilds-lab/mcp-identity MCP server

MCP server that scores any Nostr pubkey's depth-of-identity before your handler runs. Chaintip-anchored Schnorr cert, L402 priced, drop-in for AI agents that need Sybil resistance on top of paid APIs.

npm: npm i @powforge/mcp-identity

Homepage: https://powforge.dev/explorer

Whitepaper: https://powforge.dev/whitepaper

What It Does

Three MCP tools that wrap the PowForge Depth-of-Identity Oracle:

  • doi_score_lookup — given a Nostr pubkey (hex or npub), returns multi-dimensional identity score (network, longevity, kinetic-filter cost). L402-priced via the upstream oracle.

  • doi_sign_vouch — builds an unsigned Nostr event for vouching depth-of-identity for another pubkey. Caller signs; oracle counts toward score on observation.

  • doi_score_verify — offline Schnorr verification of a signed DoI cert returned from the oracle. No network.

Related MCP server: AgentStamp

Why Identity-Anchored Pricing

Most paid-API services charge per-request flat. That fails on agent-to-agent surfaces where:

  1. New agents look identical to scrapers — no signal on intent or risk.

  2. Long-tail abusers extract value cheaper than they impose cost.

  3. Whitelist gating doesn't scale to open agent ecosystems.

DoI gives your server a quantitative number for "how much would it cost to fake this caller's identity at this depth" — anchored to a specific Bitcoin chaintip cert that's non-repudiable. Use it as a multiplier on your L402 macaroon price, a rate-limit input, or a routing key.

Quick Start

npm i @powforge/mcp-identity

Add to your MCP config (Claude Desktop, Cursor, etc):

{
  "mcpServers": {
    "powforge-identity": {
      "command": "npx",
      "args": ["-y", "@powforge/mcp-identity"]
    }
  }
}

Restart the client. Three new tools appear under powforge-identity.

Why Chaintip-Anchored

The score includes a Schnorr signature over (score, dimensions, score_chaintip_height, score_chaintip_blockhash). That binds the claim to Bitcoin's kinetic filter — recomputable PageRank scores can be silently rewritten, but a chaintip-anchored cert is a fixed claim against a known time. Verification is offline.

The oracle's falsifiable claim window is documented in the whitepaper.

L402 Pricing

The MCP server transparently handles the L402 macaroon dance with oracle.powforge.dev. First call returns a 402 with a Lightning invoice; the wrapper pays from a wallet you configure (env: LNBITS_INVOICE_KEY) and retries. No keys, no accounts.

Status

License

MIT.

Source

Source lives in a private development repo. Issues, questions, and bug reports welcome here.

Available Tools

3 tools
doi_score_lookupA

Fetch a Depth-of-Identity score for a Nostr pubkey from the PowForge oracle. Returns either an L402 challenge (macaroon + bolt11 invoice + price_sats) for the caller to pay, or a Schnorr-signed score envelope when paid auth is supplied. Pricing is 1-2 sats per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYes64-hex Nostr pubkey or npub1... bech32 string
authNoL402 paid auth. Omit on first call to receive the challenge.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It transparently describes the dual behavior (returning a challenge or score envelope), the pricing (1-2 sats), and the need for paid auth. No contradictions are present.

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 compact and front-loaded: the first sentence states the core purpose, the second details the two possible outputs, and the third provides pricing. Every sentence adds value with no redundancy.

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

Completeness4/5

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

Given the complexity of a payment-gated tool with no output schema, the description explains both invocation paths, the contents of challenge and score envelope, and pricing. It lacks error handling details but is otherwise complete enough for an agent to use correctly.

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

Parameters4/5

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

The input schema already covers 100% of parameters with descriptions, but the tool description adds crucial usage semantics: the auth parameter is for paid access and should be omitted on first call, and pricing details. This goes beyond the schema's structural definitions.

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 uses the specific verb 'Fetch' and identifies the resource as a 'Depth-of-Identity score for a Nostr pubkey from the PowForge oracle'. It clearly distinguishes from sibling tools like doi_score_verify and doi_sign_vouch by focusing on score retrieval and payment handling.

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 provides clear usage context, instructing the caller to omit auth on the first call to receive a challenge and then supply auth for the score. However, it does not explicitly compare with sibling tools or state when not to use this tool.

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

doi_score_verifyA

Locally verify a Schnorr-signed DoI score envelope returned by the PowForge oracle. No network call. Default oracle pubkey is hardcoded; override via oracle_pubkey or the ORACLE_PUBKEY env var.

ParametersJSON Schema
NameRequiredDescriptionDefault
envelopeYesThe full signed JSON from a prior doi_score_lookup
oracle_pubkeyNoOverride oracle pubkey (64-hex). Default = b4b12d...

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full disclosure burden. It reveals that verification is local, the default pubkey is hardcoded, and there is an override mechanism. However, it does not mention return values or failure behavior (e.g., what happens if verification fails), which is a minor 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 only two sentences long, efficient, and front-loaded with the core purpose. Every piece of information earns its place without redundancy or fluff.

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

Completeness4/5

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

Given that there is no output schema, the description does not explain the return value (e.g., boolean, object). However, it adequately covers the tool's operation, parameters, and configuration options. For a verification tool, the missing output specification is a modest gap.

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

Parameters4/5

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

While the input schema already describes both parameters, the description adds value by noting the hardcoded default pubkey and the environment variable override (ORACLE_PUBKEY), which is not in the schema. This enriches understanding beyond the schema's field-level descriptions.

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 uses the specific verb 'verify' and resource 'DoI score envelope', clearly stating the action. It distinguishes itself from siblings doi_score_lookup and doi_sign_vouch by focusing on local verification without network calls.

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 explicitly mentions that no network call is made and that the oracle pubkey can be overridden via parameter or environment variable. It lacks explicit 'when not to use' guidance, but the context is clear enough for typical use cases.

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

doi_sign_vouchA

Build an UNSIGNED kind:33335 PowForge vouch event template. The MCP server intentionally never holds keys — the caller signs externally and publishes the signed event to relays.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes64-hex pubkey of the subject being vouched
depthYesVoucher's claimed DoI depth (integer)
vouch_countYesVoucher's total outbound vouch count (drives sqrt dilution)
satsNoOptional sats backing
contentNoOptional human-readable note

TDQS

A3.9/5.0
Behavior4/5

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

The description discloses that the tool builds an unsigned template and that the server never holds keys, requiring external signing. This provides clear behavioral context beyond the input schema, though it could mention additional traits like input validation.

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?

Two concise sentences that front-load the key purpose and workflow. No unnecessary words.

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?

The description explains the tool's role and security model but does not describe the output format or return value, which is important given no output schema. Some behavioral details are missing.

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 coverage is 100% with descriptions for all parameters. The tool description does not add any extra parameter-level meaning, so baseline score of 3 applies.

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 it builds an unsigned vouch event template, with specific kind (33335) and explains the external signing workflow. This distinguishes it from siblings (doi_score_lookup, doi_score_verify).

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 explains the external signing requirement but does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare with sibling tools.

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

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a distinct purpose: fetching a score, verifying a signature, and creating a vouch template. No overlap in functionality.

Naming Consistency4/5

Tools follow a snake_case pattern with a 'doi_' prefix, but the structure varies slightly: 'doi_score_lookup' and 'doi_score_verify' share a consistent pattern, while 'doi_sign_vouch' uses a different verb-object order.

Tool Count5/5

With three tools, the server provides a focused, minimal set covering the core operations needed for identity scoring on Nostr. The count is well-scoped for its domain.

Completeness4/5

The tools cover the essential workflow: fetch, verify, and prepare a vouch. Minor gaps include lack of oracle configuration or retrieval of existing vouches, but the core use case is addressed.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Lightning Network trust oracle for AI agents. Provides real-time node reachability checks, trust scores, and personalized pathfinding for 17,000+ Lightning nodes via 12 MCP tools.
    2
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Trust-aware Nostr MCP server. 236 tools for identity, social, DMs, trust scoring, AI-to-AI dispatch, Lightning payments, privacy proofs, and encrypted vaults. NIP-46 bunker auth; keys never leave the signing device.
    548
    1
    MIT

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/zekebuilds-lab/mcp-identity'

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