Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,545Letters: 14Defects: 1,324counted 4 min ago
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:53b57492a0af4a2335f41ca86570f4fdc93077c12d894e215b9dd9d60a004267 | sha256sum