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:11POST/stripe checkout.session.completed from Stripe
14:03:40GET/oauth/callback?code=4/0AbC…&state=x9f A person signed in; code and state parsed
14:05:02POST/approve/q9Zr Answered “Deploy” on “Ship v1.4.0?”
14:06:19POST/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.

  1. create_inbox Returns a URL like porch.okibi.ai/i/Xk3… and a secret key. Any path under the URL works.
  2. Hand out the URL Register it with a service, use it as a redirect URI, or send it to a person.
  3. wait_for_request Blocks until a request lands, then returns its method, headers, query and body.
  4. get_request Optionally, with replay_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 inbox1,000
Each request is kept for4 hours
Largest body recorded256 KB
Inbox lifetimeup to 7 days
Deleted when unused for4 hours