Porch
Public URLs for AI agents to catch webhooks, OAuth redirects, job callbacks and approval clicks.
Hosted MCP Server
npx add-mcp 'https://porch.okibi.ai/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
A front porch for your agent.
Your agent runs where the internet can't reach it. Porch gives it a public URL that catches webhooks, OAuth redirects, job callbacks and approval clicks, then lets it wait for them, read them and pass them on.
Add it to Claude Code
claude mcp add --transport http porch https://porch.okibi.ai/mcp
Any MCP client works: use https://porch.okibi.ai/mcp over Streamable HTTP. Setup for other clients
porch.okibi.ai/i/Xk3vQ9cT… 4 requests
| 14:02:11 | POST | /stripe checkout.session.completed from Stripe |
|---|---|---|
| 14:03:40 | GET | /oauth/callback?code=4/0AbC…&state=x9f A person signed in; code and state parsed |
| 14:05:02 | POST | /approve/q9Zr Answered “Deploy” on “Ship v1.4.0?” |
| 14:06:19 | POST | /jobs/render-42 The render job finished and called back |
What it's for
Anything that has to reach an agent from the outside.
Webhooks
Point Stripe, GitHub, Slack or Twilio at the inbox and wait for the event. Replays keep the exact bytes, so signatures still verify.
OAuth redirects
Use the inbox as the redirect URI. The code arrives parsed, and the person sees a page saying they can close the tab.
Job callbacks
Give a render, batch or CI job the URL and wait for it to call back, instead of polling.
Approvals
Send someone a link with your question and a button per answer. Link previews can't press buttons, so they can't answer for anyone.
How it works
Four calls from a standing start.
create_inboxReturns a URL likeporch.okibi.ai/i/Xk3…and a secret key. Any path under the URL works.- Hand out the URL Register it with a service, use it as a redirect URI, or send it to a person.
wait_for_requestBlocks until a request lands, then returns its method, headers, query and body.get_requestOptionally, withreplay_to, an exact curl command that delivers it to a local server.
Tools
Ten tools, all keyed by the inbox. Full reference
create_inbox
Get a public URL and the key that reads it.
wait_for_request
Block until something arrives, then return it.
list_requests
Summaries of what has arrived.
get_request
Headers, query and body, parsed, with an optional byte-exact curl command.
set_response
Choose the status, headers and body callers get back.
create_approval_link
A page with your question and a button per answer.
wait_for_approval
Block until a person presses a button.
get_inbox
The URL, counts and current settings.
clear_requests
Empty the inbox and keep the URL.
delete_inbox
Delete the inbox. Its URL stops working.
Limits
| Requests kept per inbox | 1,000 |
|---|---|
| Each request is kept for | 4 hours |
| Largest body recorded | 256 KB |
| Inbox lifetime | up to 7 days |
| Deleted when unused for | 4 hours |