Your Agent Can Now Schedule Its Own Follow-Up: A Run Later, or 20 Minutes After the PR Merges
A good operator doesn't change a campaign and walk away. They come back on Thursday and look at the cost per lead. They ship a page and, once it's live, tell people about it. Until today an agent working through Cogny could do the first half and had to hope someone remembered the second.
schedule_ticket is now on the Cogny MCP server and in Cogny chat. An agent books one run for later, gives it the instructions and the tools it may use, and Cogny starts it on time.
TL;DR
- One run, later. At a time (
run_at, ordelay_minutesfrom now, up to 180 days ahead), or a set number of minutes after a code ticket's PR merges (after_merge_of_ticket_id+delay_minutes, up to 7 days). - Only pre-approved tools. Write tools (
action_grants, pinnable to one channel or campaign), read tools, andcontext_tree_writesto let the run update the context tree. Nothing else is offered to it. - Or reuse an automation. Pass
automation_idto run an existing automation once, with the follow-up's context. - Each run is a ticket. It shows on the board like an automation run, knows which ticket it follows up on and, after a merge, which PR.
- Plans: Solo, Cogny AI and Cogny Pro, and Cloud with Automations on. Up to 25 waiting per workspace. Runs use credits like any run.
Two things it's for
Coming back to a change. Your agent pauses three keywords and raises a bid. In the same session it schedules the check:
In 3 days: compare cost per lead on the Brand campaign with today's $25.40 and the three paused keywords' spend before the change. Report whether the change held up.
It pre-approves the Google Ads read tools and nothing else. On Thursday the run reads the numbers and writes the answer on its ticket.
Acting after a merge. A code ticket adds a pricing FAQ to your site. The PR still needs a review, so nothing should go out yet. Your agent attaches:
20 minutes after this PR merges: check the FAQ is live at /pricing#faq, post a short note about it on X, submit the URL to Bing, and update the pricing node in the context tree.
with the X post tool, Bing Webmaster's URL submission and context_tree_writes. The run doesn't start until the PR merges. If the PR is closed without merging, it never runs and is cancelled after 60 days. It merges on Tuesday at 14:02; at 14:22 the run starts with the PR's number, title and link in its brief.
How to call it
{
"name": "schedule_ticket",
"arguments": {
"title": "Announce the pricing FAQ",
"instructions": "Check the FAQ is live at https://example.com/pricing#faq. Post one sentence about it on X with the link. Submit the URL to Bing. Update context/product/pricing with the three questions it answers.",
"after_merge_of_ticket_id": "<code ticket id>",
"delay_minutes": 20,
"action_grants": [
{ "server_name": "X Organic", "tool_name": "tool_create_post" },
{ "server_name": "Bing Webmaster Tools", "tool_name": "tool_submit_url" }
],
"context_tree_writes": true
}
}
It answers with an id, when it will run and the exact tool list the run gets. Write the instructions in full: the run starts without the conversation that scheduled it.
list_scheduled_tickets shows what's waiting (filter with ticket_id), and cancel_scheduled_ticket stops one that hasn't started. In the app, the ticket a run follows up on shows it under Scheduled follow-ups, with a Cancel button.
What it doesn't do
- It doesn't ask for approval when it starts. That is the point of pre-approving the tools, so confirm the tools and targets before you schedule. A pinned grant (one Discord channel, one campaign) is enforced on every call.
- It isn't recurring. For something that should run every week, create a loop.
- A scheduled run can't schedule more runs.
- It fires on the first merge. A code ticket with several PRs starts the clock when the first one merges.
- Free doesn't include it, the same as loops.
Full reference: Loops, automations and content loops.