Skip to main content
Glama

Connect Stripe or GitHub with one key

anyhook_connect

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
targetNoGitHub only: "owner/repo", or an organization name for an org-wide hook. Optional when the token administers exactly one repository.
api_keyNoAPI key (ahk_live_...) from anyhook_quickstart. Only needed over HTTP when no Authorization header is set; ignored over stdio.
appSlugNoConnect this existing app. Omit to create a new app for the provider.
provider_keyYesA 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite annotations (readOnlyHint: false, destructiveHint: false, openWorldHint: true) telling the agent it's a non-destructive, open-world operation, the description goes far beyond: it explains the key is used once and not stored, that without appSlug a new app is created and removed if the provider refuses the key, that re-running replaces the registration, and that GitHub sends a signed ping immediately. This is exactly the kind of behavioral context the annotations do not provide, and there is no contradiction with them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured paragraph that front-loads the main action and then adds important behavioral details in a logical order. It is dense but not wasteful; every sentence carries actionable information. A slightly tighter grouping could improve readability, but it's highly effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-read-only, open-world tool with no output schema and fully documented parameters, the description covers everything an agent needs: the exact effect, side effects, idempotency, failure handling, provider-specific behavior (GitHub ping), and the follow-up step for forwarding. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters (provider_key, appSlug, target, api_key) are documented in the schema. The description reinforces appSlug behavior and provider_key usage ('the provider is read from the key'), but adds no new syntax or format details beyond what the schema already states. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Wire a provider to AnyHook in one call', and enumerates the exact effects (register webhook, save signing secret, enable signature verification). It clearly distinguishes itself from sibling tools like anyhook_apps_create by describing the end-to-end provider-side registration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when this is used (to wire a provider), what happens with or without appSlug, and what happens on re-run. It hints that events are logged until a destination is added, but it doesn't explicitly say when to use this tool vs. anyhook_apps_create or anyhook_providers. Still, the 'afterwards' note implicitly guides the agent to a separate step for forwarding.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.