Approve Nostr signatures with your own browser signer without exposing a private key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The one-time code displayed by the Grynvault portal, for example ABCD-EFGH-JKLM.
Must be true only after the user asked to sign the displayed Grynvault browser code.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| code* | string | The one-time code displayed by the Grynvault portal, for example ABCD-EFGH-JKLM. |
| confirm_browser_sign_in* | boolean | Must be true only after the user asked to sign the displayed Grynvault browser code. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"code",
"confirm_browser_sign_in"
],
"properties": {
"code": {
"type": "string",
"maxLength": 20,
"minLength": 12,
"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."
}
},
"additionalProperties": false
}Advanced fallback: create a nostrconnect:// URI for the user to scan or open in a remote signer. Never accepts an nsec.
| Argument | Type | Description |
|---|---|---|
| relays | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"relays": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 8
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| connection_uri* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"connection_uri"
],
"properties": {
"connection_uri": {
"type": "string",
"maxLength": 8192
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| operation_id* | string | |
| confirm_invoice_creation* | boolean | Must be true only after the user explicitly approved this action. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"operation_id",
"confirm_invoice_creation"
],
"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."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| operation_id* | string | |
| confirm_invoice_creation* | boolean | Must be true only after the user explicitly approved this action. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"operation_id",
"confirm_invoice_creation"
],
"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."
}
},
"additionalProperties": false
}Forget the in-memory signer session and all prepared events.
| Argument | Type | Description |
|---|---|---|
| confirm_disconnect* | boolean | Must be true only after the user explicitly approved this action. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"confirm_disconnect"
],
"properties": {
"confirm_disconnect": {
"type": "boolean",
"const": true,
"description": "Must be true only after the user explicitly approved this action."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| confirm_account_access* | boolean | Must be true only after the user approved signing a read-only Grynvault account request. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"confirm_account_access"
],
"properties": {
"confirm_account_access": {
"type": "boolean",
"const": true,
"description": "Must be true only after the user approved signing a read-only Grynvault account request."
}
},
"additionalProperties": false
}Return the public key exposed by the currently paired signer.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Return the loopback-only page used to connect a NIP-07 browser extension or an advanced NIP-46 signer.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Check whether a user-controlled NIP-07 or NIP-46 signer is connected.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| event* | object |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"event"
],
"properties": {
"event": {
"type": "object",
"required": [
"kind",
"created_at",
"tags",
"content"
],
"properties": {
"kind": {
"type": "integer",
"maximum": 65535,
"minimum": 0
},
"tags": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string",
"maxLength": 4096
},
"maxItems": 16,
"minItems": 1
},
"maxItems": 128
},
"content": {
"type": "string",
"maxLength": 65536
},
"created_at": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| name* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"maxLength": 32,
"minLength": 1
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| plan* | string | |
| donation_sats | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"plan"
],
"properties": {
"plan": {
"enum": [
"basic_once",
"member_monthly"
],
"type": "string"
},
"donation_sats": {
"type": "integer",
"maximum": 1000000,
"minimum": 21
}
},
"additionalProperties": false
}Prepare and bind an exact unsigned kind:1 note for user review. This does not sign or publish.
| Argument | Type | Description |
|---|---|---|
| content* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"content"
],
"properties": {
"content": {
"type": "string",
"maxLength": 65536,
"minLength": 1
}
},
"additionalProperties": false
}Publish a previously verified signed event to configured relays. Requires separate explicit user intent.
| Argument | Type | Description |
|---|---|---|
| relays | array | |
| intent_id* | string | |
| confirm_publish* | boolean | Must be true only after the user explicitly approved this action. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"intent_id",
"confirm_publish"
],
"properties": {
"relays": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 8
},
"intent_id": {
"type": "string",
"format": "uuid"
},
"confirm_publish": {
"type": "boolean",
"const": true,
"description": "Must be true only after the user explicitly approved this action."
}
},
"additionalProperties": false
}Read a bounded set of verified public profile or note events from selected relays.
| Argument | Type | Description |
|---|---|---|
| kinds | array | |
| limit | integer | |
| since | integer | |
| relays | array | |
| authors | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kinds": {
"type": "array",
"items": {
"enum": [
0,
1
],
"type": "number"
},
"maxItems": 2
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"since": {
"type": "integer",
"minimum": 0
},
"relays": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 8
},
"authors": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"maxItems": 20
}
},
"additionalProperties": false
}Ask the paired signer to approve and sign the exact event bound to a fresh intent. Requires explicit user intent and never publishes.
| Argument | Type | Description |
|---|---|---|
| intent_id* | string | |
| confirm_signature* | boolean | Must be true only after the user explicitly approved this action. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"intent_id",
"confirm_signature"
],
"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."
}
},
"additionalProperties": false
}