Courier at the door
“Nobody answers — leave it at the door?” The courier waits a minute instead of driving back to the depot.
Your AI agent or a plain cron script needs permission, a clarification or wants to report back? One HTTP request — and a human gets a card with buttons in Telegram or Max. No bot, no webhooks, no infrastructure of your own.
Ship v2.4.1 to production?
Reason: all tests green, no DB migrations
To give an agent a channel to a human you normally build a bot, invent a protocol, draw keyboards, restrict access and keep a journal. Weeks of identical work for everyone. We did it once.
An agent is not a faceless key: name, description, avatar. Rights across 18 resources: none · read · write · ask. “Ask” means the action waits for human approval — granted once or for a period.
POST /v1/agent/ask — and the participant gets a card with options in Telegram/Max. The agent picks the answer up via long-poll: works from cron, CI and a laptop — no public address needed.
The agent publishes commands — the human sees “Deploy”, “Status”, “Rollback” buttons in chat and the app. A tap sends the task to the agent. Scheduled runs included.
Pause and revoke in one click, a kill switch for all agents, daily budgets, and a full journal: what the human saw, who pressed what and when. All in the dashboard and the app.
It's just HTTP. A bash script in cron, GitHub Actions, a Python daemon or an LLM agent — any code that needs a human “yes” connects in a minute. For AI agents there's MCP: Claude Code and Cursor connect via OAuth with a rights picker.
Four steps. The first question from your code reaches your messenger within minutes.
Name, emoji, a short description — that is what a person sees on the card. Zapnoty issues a key your code uses to speak as the agent.
Free plan includes three agents.
A cron script, a CI step, a home server, an LLM agent. One HTTP request: the agent asks and waits. No public address needed — answers arrive by long poll.
Claude Code and Cursor connect over MCP — no code at all.
Participants are the people who get the question and can press a button: you, a colleague, the on-call shift. Nobody else sees the agent or can reply.
Access is revoked in one click; the decision log stays.
The card arrives in Telegram, Max and the Zapnoty app: question, buttons, free text. One tap and the agent continues — the decision is recorded.
No answer in time — the request expires and the agent learns about it.
curl -s https://api.zapnoty.com/v1/agent/ask \
-H "Authorization: Bearer $KEY" \
-d '{"question":"Ship 2.4.1?","options":["Yes","No"]}'
# → {"request_id":"agrq_3xK…","status":"pending"}
# wait for the answer — call is held
curl -s -G -d wait=25 -H "Authorization: Bearer $KEY" \
https://api.zapnoty.com/v1/agent/requests/agrq_3xK…
# → {"status":"answered","answer":"Yes"}Ask and wait — two requests. No server, no webhook.
Ship 2.4.1 to production?
A thirty-item technical list is right below. This is what agents get used for by people who never touch code.
“Nobody answers — leave it at the door?” The courier waits a minute instead of driving back to the depot.
A large order or an unusual address — the agent asks for confirmation before shipping.
Tomorrow a service you haven't opened in three months charges you again. Keep it or cancel?
“Nobody home for four hours — turn the heating off?” The house suggests, you decide.
Sales asks for 15% beyond policy. The question goes to whoever decides — with the deal size on the card.
Someone called in sick. The agent asks the shift one by one until a person agrees to come in.
“Took your medicine?”, “Meter reading sent?” — with a reply, not a notification into the void.
A customer wrote at 11:40 p.m. Answer now, hand it to on-call, or leave it till morning?
Paper and cartridges are running out. The agent shows the cart and the total — the order goes after your yes.
The camera saw someone at night. A frame and two buttons: “Ours” or “Call security”.
A slot opened tomorrow at 3 p.m. Book it now, before someone else takes it?
“Leaving at 8:40, an hour of traffic — book a car?” One tap instead of an alarm and an app.
Half of them involve no AI at all: cron, CI/CD and bash.
Your own bot is weeks of work: a webhook server, a question-answer protocol, keyboards, “who may press” control, a journal. Here it all exists already, plus two messengers at once (Telegram and Max), per-resource rights and a kill switch. An agent connects with a single HTTP request.
The kill switch stops all agents with one button: keys and issued grants stay intact, every call gets a 403 — one click to bring them back. Revoking an agent kills its keys instantly. Everything the agent did is in the audit journal.
We store only what delivery needs: question texts, answers and the decision journal. Your agent's logic and data stay with you — we pass messages, we don't run code.
Like regular messages: a question to a human is 1 credit per delivery; answers and task launches are free. Agents are available on every plan, including the free one (3 agents).
Yes — that's the primary scenario. Answers and tasks are picked up via long-poll — nothing to host. Push webhooks exist too if you have a server.
Yes. An agent has a participant list — only they receive questions and can answer. Plus a “writes to participants only” mode and per-resource API rights, down to “everything via ask”.
The free plan includes 3 agents and 100 credits a month. The Telegram card shows up a minute after sign-up.