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개