AgentMart

How can an agent receive webhooks without running a server?

If your project already runs a server, add a route for the webhook: it costs nothing more, it is private, and you control it.

If you only need to know what happened, ask the sender's own API instead: some senders keep a list of recent events you can read.

For a quick test, a public request bin works without an account, but anyone who knows its address can read what arrives. To keep webhooks private without running anything yourself, write a small receiver on a free cloud plan and keep them as long as you like, or use a hosted inbox: free gateway plans keep a few days, and AgentMart's Webhook inbox keeps each message 30 days ($1 per 30 days).

Free ways

Checked on 2026-10-14. Facts about other services come from their own pages; the sources are under each one.

A route on the server you already run

A handler in your app that stores each webhook's body and headers in your own database.

  • Free: No extra cost.
  • Account and card: Nothing new.
  • Without a server: No: it is your server.
  • Keeps: As long as you keep it. Only you can read it.
  • Mind: You check the sender's signature and handle retries yourself.

Reading the sender's own list of events

Instead of receiving a webhook, read recent events from the sender. Stripe lists events going back up to 30 days, read with your API key. GitHub keeps a webhook's deliveries for 3 days, which the repository's admins (for an organization's webhooks, its owners) can read and redeliver.

webhook.site

A hosted request bin: an address that captures any request, readable later through its API.

Hookdeck

A webhook gateway. Its Console gives test addresses with no account; for private ones it points to its Event Gateway, which has a free Developer plan.

Your own small receiver on Cloudflare Workers and D1

A small Worker that stores each request in a D1 database, which you read later.

While you develop

Local forwarding while you develop

Tools that pass webhooks to a port on your machine while they run: the Stripe CLI (stripe listen), the Hookdeck CLI, ngrok, smee.io.

Side by side

WayFree, and its limitsAccount and cardWithout a serverHow long, and who can read it
A route on the server you already runNo extra cost.Nothing new.No: it is your server.As long as you keep it. Only you can read it.
Reading the sender's own list of eventsPart of those services.An account with that sender.Stripe: yes, you poll. GitHub: the webhook still needs an address to send to.Stripe: 30 days. GitHub: 3 days. Read with your own account.
webhook.siteAt most 100 requests per address; the address and its data are removed after 7 days.No account.Yes.7 days. On the free version, the data is readable by anyone who knows the address's ID.
HookdeckDeveloper plan: 10,000 events a month, 3 days of retention. Console: shows the most recent 250 requests of an address.Console: no account. Developer plan: an account, no card.Yes for receiving. Passing events on to your code needs a destination address or its command line tool.Developer plan: 3 days. Console addresses are not private: anyone with the ID can read them.
Your own small receiver on Cloudflare Workers and D1Workers: 100,000 requests a day. D1: 100,000 rows written a day, 5 GB.A Cloudflare account.Yes: nothing runs on your side, but you write and deploy the code.Until you delete it. Only you can read it.
AgentMart Webhook inboxNot free: $1 per 30 days.No sign-up form: your human's account is made by their first top-up, by card (at least $5), or by the free start.Yes.Each message 30 days while the plan runs. After a plan ends, only you can still read, export and delete what it stored, until our cleanup deletes it 30 days after the end. Only passports of the paying owner can use the instance.

When AgentMart fits

Webhook inbox: A public HTTPS address that stores every POST or PUT it receives for 30 days, so your agent can read webhooks later. $1 per 30 days.

Your human pays first, with a top-up of at least $5 by card, unless a new account uses the free start (its rules: https://agentmart.ciphyr.ai/llms/free-start.md). Unused balance expires 12 months after your last top-up or purchase. Any top-up or purchase starts the 12 months again. Our guarantee and your human's legal rights are in the terms.

  • Keeps every request it receives for 30 days, up to 1,000 messages and 20 MB in total; past those, the oldest messages are dropped.
  • Each body up to 256 KB; up to 60 requests a minute.
  • Anyone with its address can send to it. Reading: Only passports of the paying owner can use the instance.
  • Checking the sender's signature on arrival needs Webhook inbox pro on top ($2 per 30 days), or your own code.

Ask your human before you buy: it spends their balance. Over MCP (https://agentmart.ciphyr.ai/mcp):

buy {"item": "webhook-inbox"}
# Give the answer's inbox_url to the sender, then read what arrived:
inbox_messages {"instance_id": "<instance_id from the answer>"}

Over HTTP, with a session token your signing code made (the manual's Auth page: https://agentmart.ciphyr.ai/llms/auth.md):

curl -X POST https://agentmart.ciphyr.ai/v1/orders \
  -H "Authorization: Bearer $AGENTMART_SESSION" -H "Content-Type: application/json" \
  -d '{"item": "webhook-inbox", "idempotency_key": "my-inbox-1"}'
# delivery.inbox_url goes to the sender; read with delivery.instance_id:
curl https://agentmart.ciphyr.ai/v1/utilities/<instance_id>/messages -H "Authorization: Bearer $AGENTMART_SESSION"

When not to use AgentMart

  • Your project already runs a server: add a route instead.
  • You need webhooks kept longer than 30 days: store them in your own database.
  • Bodies over 256 KB, or more than 60 requests a minute.
  • Your human does not want to keep a prepaid balance.

AgentMart is sold by Ciphyr Tech OÜ. Terms: https://agentmart.ciphyr.ai/terms. The agent manual: https://agentmart.ciphyr.ai/llms.txt.