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

Server definition

Hash
sha256:dfd1ff06ff07e63dd24c474cb8b3a50e1bf8c95171fef62f99e384b3ccac5169
What it is
What a remote MCP server returned when asked what it offers: 12 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Create a new app with a name, provider source, and (optionally) destinations. Returns the inbound URL. The app is active immediately. Created WITHOUT destinations it still receives and LOGS every event (inspect-only), it just delivers nowhere until a destination is added (PATCH /api/v1/apps/{slug} with {\"destinations\": [...]}).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" }, "destinations": { "description": "Destination URLs that should receive forwarded events.", "items": { "additionalProperties": false, "properties": { "url": { "format": "uri", "type": "string" } }, "required": [ "url" ], "type": "object" }, "type": "array" }, "name": { "description": "Human-readable app name.", "type": "string" }, "source": { "description": "Provider name (stripe, github, shopify, ...). Used for signature auto-detection.", "type": "string" } }, "required": [ "name", "source" ], "type": "object" }, "name": "anyhook_apps_create", "outputSchema": null }, { "description": "List apps in your AnyHook account with inbound URLs, sources, and destination URLs. Check isActive: an inactive app's inbound URL answers setup handshakes but acknowledges and discards event POSTs (202, reason app_inactive) instead of relaying them. Destination signing secrets are redacted to has_signing_secret plus a 4-char hint; a new secret in plaintext comes only from rotating it. An app whose slug was changed lists its former URLs under legacyInboundUrls; those still route to it.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" } }, "type": "object" }, "name": "anyhook_apps_list", "outputSchema": null }, { "description": "Wire a provider to AnyHook in one call: give a Stripe or GitHub key and AnyHook registers the app's inbound URL as a webhook at the provider, saves the signing secret it yields, and turns on signature verification at the edge. The provider is read from the key; the key is used once and not stored. Without appSlug a new app is created (and removed again if the provider refuses the key). Re-running replaces the registration instead of duplicating it. GitHub sends a signed ping immediately, so the first event appears within seconds. Add a destination afterwards (PATCH /api/v1/apps/{slug}) to forward events; until then they are received and logged.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" }, "appSlug": { "description": "Connect this existing app. Omit to create a new app for the provider.", "type": "string" }, "provider_key": { "description": "A Stripe secret or restricted key (sk_… / rk_…) or a GitHub token (github_pat_… / ghp_…). The provider is read from the key. Used once to register the webhook at the provider; AnyHook does not store it. Least privilege: a Stripe restricted key with Webhook Endpoints = Write, or a fine-grained GitHub token with Webhooks = Read and write.", "type": "string" }, "target": { "description": "GitHub only: \"owner/repo\", or an organization name for an org-wide hook. Optional when the token administers exactly one repository.", "type": "string" } }, "required": [ "provider_key" ], "type": "object" }, "name": "anyhook_connect", "outputSchema": null }, { "description": "List webhook events, most recent first: id, app, type, status, attempt, destination status code, latency, timestamp. Summaries only, no request headers or body — call anyhook_inspect with an id from here to read one event's payload. Uses your AnyHook account when connected, otherwise the local in-memory store.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" }, "appSlug": { "description": "Filter to a specific app slug (account mode).", "type": "string" }, "limit": { "maximum": 200, "minimum": 1, "type": "integer" }, "source": { "description": "Filter by provider source (local mode).", "type": "string" }, "status": { "description": "Filter by status. Account mode: queued|success|retrying|failed. Local mode: received|forwarded|failed|retrying.", "type": "string" } }, "type": "object" }, "name": "anyhook_events", "outputSchema": null }, { "description": "Every AnyHook app is also an email inbox: mail sent to {user}.{app}@anyhook.net becomes an event (type email.received) you can read with anyhook_events. Returns the address and webhook URL for one of your apps.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" }, "app": { "description": "App slug (from anyhook_apps_list). Defaults to your first app.", "type": "string" } }, "type": "object" }, "name": "anyhook_inbox", "outputSchema": null }, { "description": "Full detail for one event by id, including the inbound headers and body that anyhook_events omits, plus the destination's response. Payloads can be large and often contain personal data, so fetch one at a time, only when the body is needed. Account or local store.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" }, "id": { "description": "Event ID returned by anyhook_events.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "anyhook_inspect", "outputSchema": null }, { "description": "Generate a webhook request with a valid signature for Stripe, GitHub, or Slack. If targetUrl is provided, the request is POSTed there and the response is returned.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "data": { "additionalProperties": {}, "description": "Optional fields to deep-merge into the fixture.", "type": "object" }, "event": { "description": "Event name (e.g. 'payment_intent.succeeded' for Stripe).", "type": "string" }, "provider": { "description": "Webhook provider to simulate.", "enum": [ "stripe", "github", "slack" ], "type": "string" }, "secret": { "description": "Signing secret. Falls back to a deterministic default per provider.", "type": "string" }, "targetUrl": { "description": "If set, POST the generated request to this URL and return the response.", "format": "uri", "type": "string" } }, "required": [ "provider", "event" ], "type": "object" }, "name": "anyhook_mock", "outputSchema": null }, { "description": "List webhook providers AnyHook can mock, along with the event types available for each.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "anyhook_providers", "outputSchema": null }, { "description": "Re-send a stored event to its destinations. Replays sit outside the monthly event quota but within a daily replay limit per plan, and replaying an event that was held for quota bills it as a new event. The destination does run its handler again: a receiver that is not idempotent will process the event twice while debugging.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" }, "id": { "description": "Event ID to replay. Replay does not consume event quota.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "anyhook_replay", "outputSchema": null }, { "description": "Re-send every failed event for the given app slug. Useful after fixing a downstream bug to recover queued work.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" }, "appSlug": { "description": "Bulk-replay every failed event for this app.", "type": "string" } }, "required": [ "appSlug" ], "type": "object" }, "name": "anyhook_replay_failed", "outputSchema": null }, { "description": "Show events for the given app that have not successfully reached any destination (failed or still retrying).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "description": "API key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.", "type": "string" }, "appSlug": { "type": "string" }, "limit": { "maximum": 200, "minimum": 1, "type": "integer" } }, "required": [ "appSlug" ], "type": "object" }, "name": "anyhook_undelivered", "outputSchema": null }, { "description": "Verify a webhook signature against a secret. Supports 20 providers including stripe, github, shopify, slack, line, discord, linear, vercel, paddle, hubspot, and paypal.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "body": { "description": "Raw request body.", "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "description": "Request headers as a flat object.", "type": "object" }, "provider": { "description": "Provider name (e.g. 'stripe', 'github', 'slack', 'generic').", "type": "string" }, "requestUrl": { "description": "Original request URL (required for Twilio/HubSpot). Defaults to a placeholder.", "format": "uri", "type": "string" }, "secret": { "description": "Signing secret to verify against.", "type": "string" } }, "required": [ "provider", "headers", "body", "secret" ], "type": "object" }, "name": "anyhook_verify", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:dfd1ff06ff07e63dd24c474cb8b3a50e1bf8c95171fef62f99e384b3ccac5169 | sha256sum