Let your coding agent see what reaches localhost
Expose shares a site on your machine at a public URL. With the Expose MCP server, your coding agent reads the requests that reach that URL, finds out why a webhook failed, changes your code and checks the next delivery. You stop copying payloads out of a dashboard.
> GitHub says the push webhook to my tunnel failed. Fix it.
↳ expose.list_requests(tunnel="api…", path="/github", status="error")
✓ POST /github/webhook 422 in 31 ms
↳ expose.get_request(tunnel="api…", request_id="…")
✓ X-GitHub-Event: push, but the handler only accepts pull_request
↳ edit app/Http/Controllers/GitHubWebhookController.php
✓ Handle push events
> I redelivered it. Did it work?
↳ expose.list_requests(tunnel="api…", path="/github", limit=1)
✓ POST /github/webhook 200 in 48 ms
Three steps
curl -fsSL https://expose.dev/install.sh | sh
irm https://expose.dev/install.ps1 | iex
-
1. Share your site
Install Expose with the command above, then run
expose share my-app.testorexpose share http://localhost:3000. -
2. Connect the MCP server
Add
https://expose.dev/mcpto your agent and sign in to Expose once. The setup page has the command for each agent. -
3. Ask
"Did the last Stripe webhook reach my app, and what did my app answer?" Your agent picks the tools; your client asks you before anything changes.
What agents do with Expose
Debug webhooks end to end
Your agent lists the requests that reached your tunnel, filtered by path or status, reads the headers and body of the one that failed, fixes your code and checks that the next delivery gets a 200.
expose.list_requests expose.get_request
Hear about failures as they happen
Instead of asking again and again, an agent can subscribe to request.completed on a tunnel with MCP Events and get a signed webhook for every request that fails.
request.completed
How MCP Events work →Compare two clients
The mobile app gets a 401, the browser doesn't? The agent puts both requests side by side and finds the header that differs, without you copying anything out of a dashboard.
expose.list_requests expose.get_request
Share previews on your own URLs
Ask for a stable demo URL and the agent reserves the subdomain, or adds your custom domain, tells you which CNAME record to create and activates the domain once it exists.
expose.reserve_subdomain expose.add_custom_domain expose.verify_custom_domain
Know what is running
Which tunnel points at localhost:3000, and what is its public URL? The agent sees your open tunnels across all regions and teams, and closes the ones you no longer need.
expose.list_tunnels expose.close_tunnel
Works with your agent
Any client that adds remote MCP servers by URL and signs in with OAuth.
- Claude Code
- Codex
- VS Code with GitHub Copilot
- Amp
- Claude
- ChatGPT
- Zed
- Goose
- OpenCode
Built for agents you don't watch
- Your permissions, nothing more. The agent works with your plan's limits and your teams' permissions, like the dashboard.
- No secrets. Credentials and visitor IP addresses are removed before a request is stored.
- Untrusted content stays data. Expose tells your agent to never follow instructions found in a request, and never to make changes because of one.
- Your call. Disconnect any agent on your profile page; its event subscriptions end with it.
Questions
What is agentic engineering?
Agentic engineering means letting a coding agent such as Claude Code, Codex or Amp do the work in a loop: run a tool, read the result, change the code and check again. Expose gives that loop the one thing it can't see from your editor: the live traffic that reaches your local site from the internet.
Can my agent open a tunnel?
Tunnels start on your machine with expose share, which an agent that runs terminal commands can do for you. The MCP server can't open or replay tunnels; it sees the tunnels that are open and the requests that reached them.
Does the agent see my secrets?
No. Expose removes authorization headers, cookies, signatures, secret query values and visitor IP addresses before a request is stored, and keeps only the last 50 requests of a tunnel for up to 30 minutes.
Which agents get notified about requests?
ChatGPT, which supports webhook delivery of MCP Events. Other agents ask for the latest requests with expose.list_requests when you ask them to check.
Do I need Expose Pro?
Seeing your tunnels and their requests works with any Expose account. Reserved subdomains and custom domains need Expose Pro, through the agent like in the dashboard.