Server definition
- Hash
- sha256:53b57492a0af4a2335f41ca86570f4fdc93077c12d894e215b9dd9d60a004267
- What it is
- What a remote MCP server returned when asked what it offers: 17 tools
The blob, as servednamed by its sha256
{
"instructions": "Never ask for or accept an nsec/private key. Prefer the local NIP-07 setup page with Alby, nos2x, or another browser extension; NIP-46 is an advanced fallback. Before signing, prepare an exact event and show it to the user. Call sign_event only after explicit user intent; approval still happens in the user's signer. Publish only after separate explicit publication intent. Never claim a post is live unless at least one relay acknowledgement is returned. Grynvault account access and in-app browser handoffs are read-only but still require signed-access confirmation. A handoff code lets only the browser holding its separate secret claim the dashboard. Grynvault invoice preparation never creates an invoice; only the separate create tool may do so after explicit confirmation. A pending invoice or checkout redirect is never payment, settlement, entitlement, or NIP-05 activation evidence.",
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"code": {
"description": "The one-time code displayed by the Grynvault portal, for example ABCD-EFGH-JKLM.",
"maxLength": 20,
"minLength": 12,
"type": "string"
},
"confirm_browser_sign_in": {
"const": true,
"description": "Must be true only after the user asked to sign the displayed Grynvault browser code.",
"type": "boolean"
}
},
"required": [
"code",
"confirm_browser_sign_in"
],
"type": "object"
},
"name": "approve_grynvault_browser_handoff",
"outputSchema": null
},
{
"description": "Advanced fallback: create a nostrconnect:// URI for the user to scan or open in a remote signer. Never accepts an nsec.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"relays": {
"items": {
"maxLength": 500,
"type": "string"
},
"maxItems": 8,
"type": "array"
}
},
"type": "object"
},
"name": "begin_nostrconnect_pairing",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"connection_uri": {
"maxLength": 8192,
"type": "string"
}
},
"required": [
"connection_uri"
],
"type": "object"
},
"name": "connect_bunker",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"confirm_invoice_creation": {
"const": true,
"description": "Must be true only after the user explicitly approved this action.",
"type": "boolean"
},
"operation_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"operation_id",
"confirm_invoice_creation"
],
"type": "object"
},
"name": "create_grynvault_nip05_invoice",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"confirm_invoice_creation": {
"const": true,
"description": "Must be true only after the user explicitly approved this action.",
"type": "boolean"
},
"operation_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"operation_id",
"confirm_invoice_creation"
],
"type": "object"
},
"name": "create_grynvault_supporter_invoice",
"outputSchema": null
},
{
"description": "Forget the in-memory signer session and all prepared events.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"confirm_disconnect": {
"const": true,
"description": "Must be true only after the user explicitly approved this action.",
"type": "boolean"
}
},
"required": [
"confirm_disconnect"
],
"type": "object"
},
"name": "disconnect_signer",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"confirm_account_access": {
"const": true,
"description": "Must be true only after the user approved signing a read-only Grynvault account request.",
"type": "boolean"
}
},
"required": [
"confirm_account_access"
],
"type": "object"
},
"name": "get_grynvault_account_dashboard",
"outputSchema": null
},
{
"description": "Return the public key exposed by the currently paired signer.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "get_public_key",
"outputSchema": null
},
{
"description": "Return the loopback-only page used to connect a NIP-07 browser extension or an advanced NIP-46 signer.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "get_setup_url",
"outputSchema": null
},
{
"description": "Check whether a user-controlled NIP-07 or NIP-46 signer is connected.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "get_signer_status",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"event": {
"additionalProperties": false,
"properties": {
"content": {
"maxLength": 65536,
"type": "string"
},
"created_at": {
"minimum": 0,
"type": "integer"
},
"kind": {
"maximum": 65535,
"minimum": 0,
"type": "integer"
},
"tags": {
"items": {
"items": {
"maxLength": 4096,
"type": "string"
},
"maxItems": 16,
"minItems": 1,
"type": "array"
},
"maxItems": 128,
"type": "array"
}
},
"required": [
"kind",
"created_at",
"tags",
"content"
],
"type": "object"
}
},
"required": [
"event"
],
"type": "object"
},
"name": "prepare_event",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"name": {
"maxLength": 32,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "prepare_grynvault_nip05_invoice",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"donation_sats": {
"maximum": 1000000,
"minimum": 21,
"type": "integer"
},
"plan": {
"enum": [
"basic_once",
"member_monthly"
],
"type": "string"
}
},
"required": [
"plan"
],
"type": "object"
},
"name": "prepare_grynvault_supporter_invoice",
"outputSchema": null
},
{
"description": "Prepare and bind an exact unsigned kind:1 note for user review. This does not sign or publish.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"content": {
"maxLength": 65536,
"minLength": 1,
"type": "string"
}
},
"required": [
"content"
],
"type": "object"
},
"name": "prepare_note",
"outputSchema": null
},
{
"description": "Publish a previously verified signed event to configured relays. Requires separate explicit user intent.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"confirm_publish": {
"const": true,
"description": "Must be true only after the user explicitly approved this action.",
"type": "boolean"
},
"intent_id": {
"format": "uuid",
"type": "string"
},
"relays": {
"items": {
"maxLength": 500,
"type": "string"
},
"maxItems": 8,
"type": "array"
}
},
"required": [
"intent_id",
"confirm_publish"
],
"type": "object"
},
"name": "publish_event",
"outputSchema": null
},
{
"description": "Read a bounded set of verified public profile or note events from selected relays.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"authors": {
"items": {
"pattern": "^[0-9a-f]{64}$",
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"kinds": {
"items": {
"enum": [
0,
1
],
"type": "number"
},
"maxItems": 2,
"type": "array"
},
"limit": {
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"relays": {
"items": {
"maxLength": 500,
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"since": {
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "query_events",
"outputSchema": null
},
{
"description": "Ask the paired signer to approve and sign the exact event bound to a fresh intent. Requires explicit user intent and never publishes.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"confirm_signature": {
"const": true,
"description": "Must be true only after the user explicitly approved this action.",
"type": "boolean"
},
"intent_id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"intent_id",
"confirm_signature"
],
"type": "object"
},
"name": "sign_event",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:53b57492a0af4a2335f41ca86570f4fdc93077c12d894e215b9dd9d60a004267 | sha256sum