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

Server definition

Hash
sha256:96f1352f973a6ae59640b88fa36100c3bac111bc9ee9eebd51550ed07e43d4dd
What it is
What a remote MCP server returned when asked what it offers: 20 tools

The blob, as servednamed by its sha256

{ "instructions": "TgPay Merchant API — crypto payments inside Telegram (CryptoBot-compatible). Read get_docs('quickstart') before integrating. No API token yet? Call connect — the human approves once in Telegram — then poll connect_status; afterwards pass the token via the 'TgPayCrypto-API-Token' header on this MCP server, or as an extra 'api_token' argument on any tool. Amounts are decimal strings in major units; user_id is the Telegram user id.", "tools": [ { "description": "Stop new signups for a plan (live subscriptions keep renewing).", "inputSchema": { "properties": { "plan_id": { "description": "The plan to archive.", "type": "integer" } }, "required": [ "plan_id" ], "type": "object" }, "name": "archiveSubscriptionPlan", "outputSchema": null }, { "description": "Stop future charges for one subscription (paid time runs out).", "inputSchema": { "properties": { "subscription_id": { "description": "The subscription.", "type": "integer" } }, "required": [ "subscription_id" ], "type": "object" }, "name": "cancelSubscription", "outputSchema": null }, { "description": "Start token issuance WITHOUT the Mini App UI: creates a merchant-app request and returns a t.me approve link plus a poll_secret. Show the link to the human — they approve with one button in the @tgpaycryptobot bot — then call connect_status with the poll_secret. Use only when no API token is configured yet.", "inputSchema": { "properties": { "app_name": { "description": "Merchant app name shown to the approving human, 1-64 chars (e.g. the project/bot name).", "type": "string" } }, "required": [ "app_name" ], "type": "object" }, "name": "connect", "outputSchema": null }, { "description": "Poll a connect request. Returns pending | denied | expired, or — once approved — the app id and the API TOKEN (returned exactly once: save it to the project's .env immediately, never print it in logs). The token is SCOPED (read, invoices, subscriptions, webhooks) — it cannot move money out of the app; transfers/refunds/checks need the primary token the human holds in the Mini App. Poll every 3-5 seconds while pending.", "inputSchema": { "properties": { "poll_secret": { "description": "The poll_secret from the connect tool.", "type": "string" } }, "required": [ "poll_secret" ], "type": "object" }, "name": "connect_status", "outputSchema": null }, { "description": "Create a one-off payment invoice; the payer opens result.mini_app_invoice_url. See the invoices doc.", "inputSchema": { "properties": { "accepted_assets": { "description": "Fiat mode: comma-separated assets the payer may pay in.", "type": "string" }, "allow_anonymous": { "description": "Default true.", "type": "boolean" }, "allow_comments": { "description": "Default true.", "type": "boolean" }, "amount": { "description": "Decimal string in MAJOR units, e.g. \"5\" = 5 USDT. Never a float. Omit for an open-amount invoice.", "type": "string" }, "asset": { "description": "Asset code (crypto mode).", "type": "string" }, "currency_type": { "description": "crypto (default) | fiat.", "type": "string" }, "description": { "description": "Shown to the payer (≤1024).", "type": "string" }, "expires_in": { "description": "Invoice TTL in seconds.", "type": "integer" }, "fiat": { "description": "Fiat code (fiat mode).", "type": "string" }, "hidden_message": { "description": "Revealed to the payer ONLY after payment (≤2048).", "type": "string" }, "paid_btn_name": { "description": "viewItem | openChannel | openBot | callback.", "type": "string" }, "paid_btn_url": { "description": "URL for the paid button.", "type": "string" }, "payload": { "description": "Opaque data echoed back in the webhook (≤4096).", "type": "string" }, "rate_lock_seconds": { "description": "Fiat mode: freeze crypto quotes for this long.", "type": "integer" }, "swap_to": { "description": "Auto-convert the received amount to this asset.", "type": "string" } }, "type": "object" }, "name": "createInvoice", "outputSchema": null }, { "description": "Create an IMMUTABLE recurring-billing plan; send payers to result.mini_app_subscribe_url. See the subscriptions doc.", "inputSchema": { "properties": { "amount": { "description": "Decimal string in MAJOR units, e.g. \"5\" = 5 USDT. Never a float. Charged per period.", "type": "string" }, "asset": { "description": "Asset code, e.g. USDT.", "type": "string" }, "name": { "description": "Plan name shown to payers (≤64).", "type": "string" }, "period_days": { "description": "Billing period in days.", "type": "integer" } }, "required": [ "name", "asset", "amount", "period_days" ], "type": "object" }, "name": "createSubscriptionPlan", "outputSchema": null }, { "description": "Delete an unclaimed check (refunds the hold).", "inputSchema": { "properties": { "check_id": { "description": "The check to delete.", "type": "integer" } }, "required": [ "check_id" ], "type": "object" }, "name": "deleteCheck", "outputSchema": null }, { "description": "Delete an unpaid invoice.", "inputSchema": { "properties": { "invoice_id": { "description": "The invoice to delete.", "type": "integer" } }, "required": [ "invoice_id" ], "type": "object" }, "name": "deleteInvoice", "outputSchema": null }, { "description": "Merchant app balance per asset (available + onhold).", "inputSchema": { "properties": {}, "type": "object" }, "name": "getBalance", "outputSchema": null }, { "description": "List checks.", "inputSchema": { "properties": { "asset": { "description": "Filter by asset code.", "type": "string" }, "check_ids": { "description": "Comma-separated ids.", "type": "string" }, "count": { "description": "Page size (default 100).", "type": "integer" }, "offset": { "description": "Skip this many.", "type": "integer" }, "status": { "description": "active | activated.", "type": "string" } }, "type": "object" }, "name": "getChecks", "outputSchema": null }, { "description": "Supported crypto assets (code/name/decimals) and fiats.", "inputSchema": { "properties": {}, "type": "object" }, "name": "getCurrencies", "outputSchema": null }, { "description": "Current asset↔fiat display rates.", "inputSchema": { "properties": {}, "type": "object" }, "name": "getExchangeRates", "outputSchema": null }, { "description": "List invoices (newest first).", "inputSchema": { "properties": { "asset": { "description": "Filter by asset code.", "type": "string" }, "count": { "description": "Page size (default 100).", "type": "integer" }, "fiat": { "description": "Filter by fiat code.", "type": "string" }, "invoice_ids": { "description": "Comma-separated ids.", "type": "string" }, "offset": { "description": "Skip this many.", "type": "integer" }, "status": { "description": "active | paid | expired.", "type": "string" } }, "type": "object" }, "name": "getInvoices", "outputSchema": null }, { "description": "Verify the token: app id, name, webhook config, token scopes.", "inputSchema": { "properties": {}, "type": "object" }, "name": "getMe", "outputSchema": null }, { "description": "App volume/count stats for a period.", "inputSchema": { "properties": { "end_at": { "description": "ISO 8601 period end.", "type": "string" }, "start_at": { "description": "ISO 8601 period start.", "type": "string" } }, "type": "object" }, "name": "getStats", "outputSchema": null }, { "description": "List subscription plans.", "inputSchema": { "properties": {}, "type": "object" }, "name": "getSubscriptionPlans", "outputSchema": null }, { "description": "List subscriptions (subscribers).", "inputSchema": { "properties": { "plan_id": { "description": "Filter by plan.", "type": "integer" }, "status": { "description": "active | grace | cancelled | expired.", "type": "string" }, "user_id": { "description": "Filter by Telegram user id.", "type": "integer" } }, "type": "object" }, "name": "getSubscriptions", "outputSchema": null }, { "description": "List app→user transfers.", "inputSchema": { "properties": { "asset": { "description": "Filter by asset code.", "type": "string" }, "count": { "description": "Page size (default 100).", "type": "integer" }, "offset": { "description": "Skip this many.", "type": "integer" }, "spend_id": { "description": "Filter by idempotency key.", "type": "string" }, "transfer_ids": { "description": "Comma-separated ids.", "type": "string" } }, "type": "object" }, "name": "getTransfers", "outputSchema": null }, { "description": "Read a TgPay Merchant API integration doc. START HERE before integrating: topics quickstart, invoices, subscriptions, transfers-checks, webhooks, errors.", "inputSchema": { "properties": { "topic": { "description": "quickstart | invoices | subscriptions | transfers-checks | webhooks | errors", "type": "string" } }, "required": [ "topic" ], "type": "object" }, "name": "get_docs", "outputSchema": null }, { "description": "Update app name / webhook_url (https) / webhook_events opt-in list. Needs the 'webhooks' scope (the connect-issued token has it) or the primary token. See the webhooks doc for the event types and signature verification.", "inputSchema": { "properties": { "name": { "description": "New app name (1-64).", "type": "string" }, "webhook_events": { "description": "Extended event types to opt into (invoice_paid is always delivered); [] = invoice_paid-only.", "items": { "description": "Event type.", "type": "string" }, "type": "array" }, "webhook_url": { "description": "https URL for webhook delivery; \"\" clears it.", "type": "string" } }, "type": "object" }, "name": "updateApp", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:96f1352f973a6ae59640b88fa36100c3bac111bc9ee9eebd51550ed07e43d4dd | sha256sum