Nostr Signer

Approve Nostr signatures with your own browser signer without exposing a private key.

使うべきか

品質と安全性

A
説明の品質
96%
スキーマの完全性
76%
命名の品質
85%
ポイズニングのリスク
100%
権限の一致
90%
プロトコルへの準拠
100%

検出事項(8)

  • LOWTool 'get_setup_url' description lacks action verbget_setup_url 内
  • LOWTool 'get_public_key' description lacks action verbget_public_key 内
  • LOWTool 'get_grynvault_account_dashboard' name length outside 3-30 rangeget_grynvault_account_dashboard 内
  • LOWTool 'approve_grynvault_browser_handoff' name length outside 3-30 rangeapprove_grynvault_browser_handoff 内
  • LOWTool 'prepare_grynvault_supporter_invoice' name length outside 3-30 rangeprepare_grynvault_supporter_invoice 内
  • LOWTool 'create_grynvault_supporter_invoice' name length outside 3-30 rangecreate_grynvault_supporter_invoice 内
  • LOWTool 'prepare_grynvault_nip05_invoice' name length outside 3-30 rangeprepare_grynvault_nip05_invoice 内
  • LOWTool 'get_setup_url' suggests web access but openWorldHint=falseget_setup_url 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~2,268トークン数(ツール定義)
~854 B一般的なレスポンスサイズ
注意への影響は中程度(128k コンテキストの 1.77%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "nostr-signer": {
      "url": "https://signer.frontiercrown.com/mcp"
    }
  }
}

リモートエンドポイント

https://signer.frontiercrown.com/mcpstreamable-http

できること

ツール一覧

ツール(17)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢get_setup_url

Return the loopback-only page used to connect a NIP-07 browser extension or an advanced NIP-46 signer.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_signer_status

Check whether a user-controlled NIP-07 or NIP-46 signer is connected.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡begin_nostrconnect_pairing(relays)

Advanced fallback: create a nostrconnect:// URI for the user to scan or open in a remote signer. Never accepts an nsec.

入力スキーマ

{
  "type": "object",
  "properties": {
    "relays": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 500
      },
      "maxItems": 8
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪connect_bunker(connection_uri)

Connect a bunker:// URI only when the user knowingly supplied it. Prefer the local setup page so connection secrets are not placed in chat. Never accepts an nsec.

入力スキーマ

{
  "type": "object",
  "properties": {
    "connection_uri": {
      "type": "string",
      "maxLength": 8192
    }
  },
  "required": [
    "connection_uri"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_public_key

Return the public key exposed by the currently paired signer.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢prepare_note(content)

Prepare and bind an exact unsigned kind:1 note for user review. This does not sign or publish.

入力スキーマ

{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "minLength": 1,
      "maxLength": 65536
    }
  },
  "required": [
    "content"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢prepare_event(event)

Validate and bind an exact unsigned Nostr event for user review. This does not sign or publish. Show the user every field before requesting a signature.

入力スキーマ

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "integer",
          "minimum": 0,
          "maximum": 65535
        },
        "created_at": {
          "type": "integer",
          "minimum": 0
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 4096
            },
            "minItems": 1,
            "maxItems": 16
          },
          "maxItems": 128
        },
        "content": {
          "type": "string",
          "maxLength": 65536
        }
      },
      "required": [
        "kind",
        "created_at",
        "tags",
        "content"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "event"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪sign_event(intent_id, confirm_signature)

Ask the paired signer to approve and sign the exact event bound to a fresh intent. Requires explicit user intent and never publishes.

入力スキーマ

{
  "type": "object",
  "properties": {
    "intent_id": {
      "type": "string",
      "format": "uuid"
    },
    "confirm_signature": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user explicitly approved this action."
    }
  },
  "required": [
    "intent_id",
    "confirm_signature"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴publish_event(intent_id, confirm_publish, relays)

Publish a previously verified signed event to configured relays. Requires separate explicit user intent.

入力スキーマ

{
  "type": "object",
  "properties": {
    "intent_id": {
      "type": "string",
      "format": "uuid"
    },
    "confirm_publish": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user explicitly approved this action."
    },
    "relays": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 500
      },
      "maxItems": 8
    }
  },
  "required": [
    "intent_id",
    "confirm_publish"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢query_events(relays, authors, kinds, limit, since)

Read a bounded set of verified public profile or note events from selected relays.

入力スキーマ

{
  "type": "object",
  "properties": {
    "relays": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 500
      },
      "maxItems": 8
    },
    "authors": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$"
      },
      "maxItems": 20
    },
    "kinds": {
      "type": "array",
      "items": {
        "type": "number",
        "enum": [
          0,
          1
        ]
      },
      "maxItems": 2
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "since": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴disconnect_signer(confirm_disconnect)

Forget the in-memory signer session and all prepared events.

入力スキーマ

{
  "type": "object",
  "properties": {
    "confirm_disconnect": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user explicitly approved this action."
    }
  },
  "required": [
    "confirm_disconnect"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_grynvault_account_dashboard(confirm_account_access)

Read the connected Nostr identity's Grynvault supporter, payment, and NIP-05 dashboard using a short-lived signed authorization. This does not create an invoice or change settlement.

入力スキーマ

{
  "type": "object",
  "properties": {
    "confirm_account_access": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user approved signing a read-only Grynvault account request."
    }
  },
  "required": [
    "confirm_account_access"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡approve_grynvault_browser_handoff(code, confirm_browser_sign_in)

Sign a short-lived, read-only Grynvault account handoff code so the browser tab that created it can receive its own dashboard. This does not create an invoice, publish a Nostr event, change settlement, or grant wallet custody.

入力スキーマ

{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "minLength": 12,
      "maxLength": 20,
      "description": "The one-time code displayed by the Grynvault portal, for example ABCD-EFGH-JKLM."
    },
    "confirm_browser_sign_in": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user asked to sign the displayed Grynvault browser code."
    }
  },
  "required": [
    "code",
    "confirm_browser_sign_in"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢prepare_grynvault_supporter_invoice(plan, donation_sats)

Prepare an exact, short-lived signed-authorization request for a one-time donation of 21 to 1,000,000 sats or the fixed 2,100-sat 30-day membership. Does not sign, create, pay, or settle an invoice.

入力スキーマ

{
  "type": "object",
  "properties": {
    "plan": {
      "type": "string",
      "enum": [
        "basic_once",
        "member_monthly"
      ]
    },
    "donation_sats": {
      "type": "integer",
      "minimum": 21,
      "maximum": 1000000
    }
  },
  "required": [
    "plan"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_grynvault_supporter_invoice(operation_id, confirm_invoice_creation)

After separate explicit user confirmation, sign the prepared authorization and create exactly one pending Grynvault supporter invoice. Does not pay it and never treats a redirect as settlement.

入力スキーマ

{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "string",
      "format": "uuid"
    },
    "confirm_invoice_creation": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user explicitly approved this action."
    }
  },
  "required": [
    "operation_id",
    "confirm_invoice_creation"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢prepare_grynvault_nip05_invoice(name)

Check and normalize a [email protected] identifier, then prepare its exact 2,000-sat invoice authorization. Does not sign, reserve the name, create, pay, or settle an invoice.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "pattern": "^[A-Za-z0-9_-]+$"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_grynvault_nip05_invoice(operation_id, confirm_invoice_creation)

After separate explicit user confirmation, sign the prepared authorization and create exactly one pending 2,000-sat [email protected] invoice. Does not pay, settle, activate, or prove identity.

入力スキーマ

{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "string",
      "format": "uuid"
    },
    "confirm_invoice_creation": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user explicitly approved this action."
    }
  },
  "required": [
    "operation_id",
    "confirm_invoice_creation"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 17 件
検証済みバージョンは記録されていませんツール 17 件
検証済みバージョンは記録されていませんツール 17 件