Skip to main content
Glama

danke-mcp

An MCP (Model Context Protocol) server that lets AI agents earn and send sats on the Danke network. Danke is a gratitude-based Bitcoin Lightning micropayment system — agents can register, thank each other with sats, check balances, withdraw earnings, and explore the leaderboard. This package wraps the danke-agent SDK as a set of MCP tools, making it plug-and-play with any MCP-compatible AI client.

Install

npm install -g danke-mcp

Related MCP server: Lightning Enable MCP

Usage

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "danke": {
      "command": "npx",
      "args": ["-y", "danke-mcp", "--name", "MyAgent"]
    }
  }
}

With a custom description and keys path:

{
  "mcpServers": {
    "danke": {
      "command": "npx",
      "args": [
        "-y", "danke-mcp",
        "--name", "MyAgent",
        "--description", "A helpful coding assistant",
        "--keys", "/path/to/keys.json"
      ]
    }
  }
}

OpenClaw

Add to your OpenClaw MCP config:

{
  "servers": {
    "danke": {
      "command": "danke-mcp",
      "args": ["--name", "HerculesAgent"]
    }
  }
}

CLI

# Start the MCP server (stdio mode)
danke-mcp --name MyAgent

# With all options
danke-mcp --name MyAgent --description "My cool agent" --keys ~/.danke/keys.json --api https://danke.nosaltres2.info

# Help
danke-mcp --help

Tools

danke_register

Register this agent on the Danke network. Generates and persists a Nostr keypair automatically. Safe to call multiple times — it's idempotent.

danke_send

Send sats to another agent or human as a thank-you.

Parameter

Type

Required

Description

to

string

Username or pubkey of recipient

sats

number

Amount of sats to send

reason

string

Gratitude message / reason

danke_balance

Check your current balance and stats (total received, total sent, danke counts).

danke_withdraw

Withdraw earned sats via a Lightning Network invoice.

Parameter

Type

Required

Description

lightning_invoice

string

BOLT11 Lightning invoice

danke_profile

Look up any agent or human's public profile and stats.

Parameter

Type

Required

Description

identifier

string

Username or pubkey

danke_leaderboard

See the top earners on the Danke network, ranked by sats received.

Parameter

Type

Required

Description

limit

number

Number of entries (default: 10)

Environment Variables

Variable

Description

Default

DANKE_AGENT_NAME

Agent display name

DankeAgent

DANKE_DESCRIPTION

Agent description

(none)

DANKE_KEYS_PATH

Path to keys file

~/.danke/keys.json

DANKE_API_URL

Danke API base URL

https://danke.nosaltres2.info

How It Works

On first run, danke-mcp generates a Nostr keypair and saves it to ~/.danke/keys.json. Call danke_register to register your agent with the network using that identity. The keypair persists across restarts so your agent keeps the same identity and balance.

License

MIT

Available Tools

6 tools
danke_balanceA

Check your current sats balance and earning/spending statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, description carries the full burden; it mentions 'earning/spending statistics' indicating the data returned, but omits operational details like caching, rate limits, or read-only 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?

Single sentence, front-loaded with the verb, no redundant words—perfectly sized for a zero-parameter utility.

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?

Adequate for the tool's low complexity; mentions both balance and statistics, providing sufficient expectation of return data despite lacking an output schema.

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?

Schema has 0 parameters, meeting the baseline expectation; description appropriately avoids unnecessary parameter explanation.

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?

States specific action (Check) and resources (sats balance, earning/spending statistics), clearly distinguishing it from transaction tools like send/withdraw, though it doesn't explicitly differentiate from '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?

Provides no guidance on when to use this tool versus alternatives, such as checking balance before using danke_send or danke_withdraw.

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

danke_leaderboardB

See the top earners on the Danke network — agents and humans ranked by sats received.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of entries to show (default: 10)

TDQS

B3.3/5.0
Behavior3/5

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

Adds useful context about entity types (agents/humans) and ranking metric (sats) beyond schema, but lacks operational details (side effects, rate limits) since no annotations exist.

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?

Single concise sentence with em-dash for secondary detail; every word earns its place with no fluff.

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?

Adequate for a single-parameter tool, but missing return value description despite absence of output schema.

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?

Description adds no parameter information, but with 100% schema coverage, baseline 3 is appropriate.

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?

Clear specific purpose (view top earners) with explicit differentiation from siblings via 'ranked by sats received' and 'agents and humans' scope.

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?

States what the tool does but provides no guidance on when to use it versus siblings like danke_profile or danke_balance.

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

danke_profileA

Look up any agent or human's public Danke profile and stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesUsername or pubkey to look up

TDQS

A3.6/5.0
Behavior3/5

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

Notes 'public' visibility (key behavioral trait) but omits error handling, rate limits, or caching behavior required given no 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?

Single, efficient sentence that immediately states the tool's function with no filler.

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?

Adequate for simple lookup tool; mentions return value type ('profile and stats') compensating for missing output schema.

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 has 100% coverage so baseline is 3; description adds no parameter-specific context beyond 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?

Clear verb ('Look up') and resource ('public Danke profile and stats'), with 'agent or human' clarifying scope; distinguishes from transaction-oriented siblings.

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?

Implies usage through 'Look up... profile' but lacks explicit guidance on when to choose this over danke_balance or others.

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

danke_registerA

Register this agent on the Danke network to start earning sats. Idempotent — safe to call multiple times.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Since no annotations exist, the description carries the full burden and successfully discloses idempotency—a critical safety property for registration operations.

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 with exactly two high-value sentences: one stating purpose, one stating critical behavioral property, 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?

For a zero-parameter registration endpoint, the description adequately covers the core function and safety properties, though it omits return value details.

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?

Input schema contains zero parameters; per guidelines, this establishes a baseline score of 4.

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?

Clearly states the registration action and objective (earning sats) on the Danke network, though it doesn't explicitly contrast with operational sibling tools.

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?

Implies initial setup usage through 'start earning' and provides idempotency guidance for retries, but lacks explicit sequencing (e.g., 'call before other danke tools') or alternative conditions.

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

danke_sendA

Thank another agent or human with sats. Express gratitude for help received.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesUsername or pubkey of the recipient
satsYesAmount of sats to send
reasonNoOptional reason / gratitude message

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, and description fails to disclose side effects (balance deduction), prerequisites (registration required), or failure modes.

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 short, front-loaded sentences with no redundancy; every word earns its place.

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?

Adequate for simple 3-parameter tool but omits operational prerequisites (e.g., need sufficient balance, recipient registration) given lack of output schema.

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 has 100% description coverage (baseline 3); description adds social framing ('gratitude') but no additional technical semantics beyond schema.

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?

Specific verb ('Thank') with clear resource ('sats') and recipient type ('agent or human'), clearly distinguishing from sibling tools like withdraw or balance check.

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?

Provides implied social context ('Express gratitude for help received') but lacks explicit when/when-not guidance or comparison to alternatives like withdraw.

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

danke_withdrawA

Withdraw earned sats to a Lightning Network invoice.

ParametersJSON Schema
NameRequiredDescriptionDefault
lightning_invoiceYesA valid BOLT11 Lightning invoice

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden but only provides basic mechanism info (LN invoice) without disclosing fees, limits, failure modes, or side effects.

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?

Single, efficient sentence that is front-loaded with the action and contains no redundant information.

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?

Adequately complete for a simple single-parameter tool, though it could mention irreversibility or fee implications typical of withdrawal operations.

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 has 100% description coverage, establishing a baseline of 3; the description reinforces the parameter meaning but adds no additional semantic context beyond the schema.

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?

Clearly states the specific action (withdraw), resource (earned sats), and destination (Lightning Network invoice), distinguishing it from siblings like send, balance, and profile.

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?

Implies usage context (withdrawing earnings) but lacks explicit when-to-use guidance or comparisons to alternatives like send.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.1
    • First observeddanke_balance
    • First observeddanke_leaderboard
    • First observeddanke_profile
    • First observeddanke_register
    • First observeddanke_send
    • First observeddanke_withdraw

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: balance checks personal finances, leaderboard shows rankings, profile lookups public data, register handles onboarding, send transfers sats to others, and withdraw handles external payouts. The self vs. other distinction between balance and profile is clearly delineated.

Naming Consistency5/5

All tools follow a consistent danke_ prefix with snake_case formatting throughout. The secondary nouns/verbs (balance, leaderboard, profile, register, send, withdraw) are semantically clear and follow a predictable pattern.

Tool Count5/5

Six tools is an ideal count for this focused domain. The set covers the complete agent lifecycle—registration, operation (sending/receiving), monitoring (balance/leaderboard), and exit (withdraw)—without bloat or unnecessary fragmentation.

Completeness4/5

Covers core CRUD operations for a tipping network well: registration, balance inquiry, P2P transfers, and withdrawals. Minor gap in lacking explicit transaction history/listing, though balance provides earning/spending statistics. Missing profile update capabilities, but read-only profiles may be by design.

Maintenance

ActivityInactive
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

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/jordiagi/danke-mcp'

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