pull_request event wakes an agent, which reviews the diff
and posts a summary. The provider talks to a URL; the agent wakes on it.
1. Mint the agent’s URL
2. Point the provider at it
Pastehook.url into GitHub’s webhook settings (or Stripe’s, or Linear’s) and
give it the secret. Naïve verifies the signature and refuses anything that fails
— your agent never sees unverified traffic.
The delivery must carry two headers:
The window is five minutes. An unknown or inactive endpoint answers
404 — the
same answer as a wrong slug — so the URL is never an existence oracle.
3. Signing it yourself
If you are the one calling the URL — a backend of yours, a test, a provider with no built-in signing — use the SDK helper rather than rebuilding the string:4. What the agent receives
The delivery becomes a task withsource: "webhook" and the provider’s body in
payload:
payload:
5. List and revoke
Revoking answers
404 when it removed nothing — a delete that matched
nothing is an error you can see, not a silent success.6. Watch it react, live
One URL per agent, or one per provider?
One endpoint is bound to exactly one agent, and the binding is by the endpoint’s own slug rather than anything in the provider’s payload. So:- Two providers, one agent — mint two endpoints on the same agent. Both wake
it;
payloadtells them apart. - One provider, two agents — mint one endpoint per agent and register both
URLs with the provider. Name them (
--name github-pr,--name github-issues) so the list still reads six months later.