Have your agent tell you each morning who opened what you sent.
A scheduled prompt that reads your Stacktree account every morning and posts one report in your chat: which pages were opened, who opened them through the link you made for them, and what comments came in. It uses three read calls that already exist, so nothing on your account changes and nobody is contacted.
No card · 3 pages free · about a minute
How do I get a daily report of who opened the links I sent?
Connect your agent to Stacktree, then schedule a prompt that reads your pages each morning with list_sites, list_share_links and list_feedback and posts what changed. Opens through a link you made for one person come back with that person's name, and comments come back quoted with the part of the page they are about. Names and open counts need Solo ($19 a month); comments work on every plan.
Why a scheduled read
Grok Bot routines, Claude scheduled tasks and ChatGPT scheduled tasks all run a saved prompt on a timer and put the result where you read it. Stacktree has no webhook for opens, so an agent learns about them by asking, and once a morning is enough to know who to follow up with before the day starts. Every call the report makes exists today, and none of them writes anything.
Typical flow
- Once: connect Stacktree to the agent at
https://api.stacktr.ee/mcpand sign in. - When you send a page, give each person their own share link with their name on it, so their opens come back under that name.
- Paste the prompt for your agent (below) and let it set the schedule.
- Each morning it calls
list_sites, thenlist_share_linkson the pages opened in the last 24 hours, thenlist_feedbackon the pages with open comments, to read what was said. - One report lands in your chat, grouped by page, or one line saying nothing changed.
A report reads like this:
Acme Q3 report
Opened by Megan Hanning (twice) and Tom Reid.
New comment on "Channel mix": "Can we split paid social by platform?"
Globex proposal
Opened by 2 people, neither through a named link. What the agent reads
list_sitesreturns every page on the account, newest-updated first. Each row says whether anyone has opened the page (opened, on every plan), and on Solo and up how many people have (unique_viewers) and when it was last opened (last_viewed_at, in unix seconds). It also counts each page's open comments (unresolved_feedback), without their words, which is whatlist_feedbackis for. The list is paged: whilehas_moreis true, the agent calls again withnext_beforeandnext_before_idasbeforeandbefore_id. A row withdeleted_atset is a page that has stopped serving.list_share_linksreturns the links on one page, each with the name you gave it (label), how many times it was opened (opens) and when it was last opened (last_opened_at).list_feedbackreturns the comments on one page, open ones first, each with what the reader wrote (comment), the part of the page it is about (target) and when (created_at). A comment does not say who left it, so the report quotes it without a name.
Viewer numbers cover the last 30 days, and Stacktree leaves out crawlers and email link scanners when it counts an open, so a mail filter checking the link does not read as your client opening it.
A share link opens without the page's passcode. If the reader should still type the passcode, send a ?to= link instead: it records their name too, but only the dashboard and the REST call below show those names.
Which plan the report needs
The comments half works on every plan, Free included. The opens half needs viewer numbers, which start on Solo at $19 a month. On Free, list_sites sets metrics_locked to true and returns null for the counts and the last-opened time, and list_share_links returns null opens, so the agent can say that a page has been opened but not when or by whom, and cannot tell this morning's opens from last week's. Studio, at $79 a month, adds time on page and scroll depth per person over REST; the prompts here do not use them.
The prompts, one per agent
Each prompt asks for the same report. Change the time, and keep the sentence that starts "Only read": it is what stops a scheduled agent from doing more than reading. Stacktree's sign-in asks to read your pages and to publish and change them, because the same connection publishes from chat; the prompts only use the three read calls.
Grok Bot
Connect once. Grok Bot adds custom MCP connectors when you ask in chat; send it this:
Add Stacktree as a custom MCP connector for my account: a remote HTTPS server at https://api.stacktr.ee/mcp that signs in with OAuth, so leave the HTTP headers empty. Approve the card it shows, choose Authorize, then Allow on Stacktree's sign-in page. The card then shows Stacktree as added. Connectors are account-wide, so every bot on the account can use it.
One snag: the Grok Bot desktop app finishes the sign-in at http://localhost:8787/callback. If another program is using port 8787 (Cloudflare's wrangler dev does by default), the sign-in ends on a "not found" page. Stop that program, then reload the tab or choose Reopen on the card.
Then ask the bot that should own the job to create the routine:
Every day at 8:00 AM, check my Stacktree pages and post a report in this conversation of what changed in the last 24 hours. Use list_sites for every page, list_share_links on each page opened in that time, and list_feedback on each page with open comments to read what they said. Group by page: who opened it, by the name on their share link or as a head count, then each new comment, quoted, with the part of the page it is about. If nothing was opened and no comments came in, post only: No opens or comments since yesterday. Only read: never publish, update, resolve, revoke or send anything. If Stacktree is unavailable, report the failure instead of using old data. The bot confirms the schedule and shows the next run. Routines use the time zone in Grok Bot's settings and keep running with your laptop closed. Use Test run once before you rely on it.
Claude
Add the connector under Customize > Connectors, then Add custom connector, with the URL https://api.stacktr.ee/mcp, and sign in (step by step). Scheduled tasks are on Claude's paid plans. In a chat, describe the task and how often it runs:
Every day at 8 AM, check my Stacktree pages with the Stacktree connector and report what changed in the last 24 hours. Use list_sites for every page, list_share_links on each page opened in that time, and list_feedback on each page with open comments to read what they said. Group by page: who opened it, by the name on their share link or as a head count, then each new comment, quoted, with the part of the page it is about. If nothing was opened and no comments came in, reply only: No opens or comments since yesterday. Only read: never publish, update, resolve, revoke or send anything. Claude proposes a name, schedule and instructions; choose Schedule. Each run is its own session under Scheduled, and runs happen in the cloud while your computer is asleep.
ChatGPT
ChatGPT creates a scheduled task when you ask for one in a chat, and tells you about each run by push or email, set under Settings > Notifications. Reaching Stacktree is the open question. Stacktree is not in ChatGPT's app directory yet, so you add https://api.stacktr.ee/mcp as a custom app in developer mode, which OpenAI documents for Business, Enterprise and Edu workspaces, and for Pro with read and fetch tools only. That is enough here, because the report only reads.
Every day at 8 AM, use the Stacktree app to check my pages and report what changed in the last 24 hours. Use list_sites for every page, list_share_links on each page opened in that time, and list_feedback on each page with open comments to read what they said. Group by page: who opened it, by the name on their share link or as a head count, then each new comment, quoted, with the part of the page it is about. If nothing was opened and no comments came in, reply only: No opens or comments since yesterday. Only read: never publish, update, resolve, revoke or send anything. OpenAI's tasks article says a task can use apps that are available to your account. It does not say whether that includes a developer-mode app, so run the prompt once by hand, then check that the first scheduled run reached Stacktree.
Any MCP client
Point the client at https://api.stacktr.ee/mcp. It signs in with OAuth; a client that cannot can send an API key from app.stacktr.ee/api-keys as Authorization: Bearer stk_live_…. Run this from whatever starts your agent on a timer:
Check my Stacktree pages and report what changed in the last 24 hours. Use list_sites for every page, and call it again with before and before_id while has_more is true. Then use list_share_links on each page opened in that time, and list_feedback on each page with open comments to read what they said. Group by page: who opened it, by the name on their share link or as a head count, then each new comment, quoted, with the part of the page it is about. If nothing was opened and no comments came in, reply only: No opens or comments since yesterday. Only read: never publish, update, resolve, revoke or send anything. Without an agent: the REST calls
Each MCP call is a REST route, so a cron job can build the same report with an API key:
curl -H "Authorization: Bearer $STACKTREE_KEY" https://api.stacktr.ee/sites
curl -H "Authorization: Bearer $STACKTREE_KEY" https://api.stacktr.ee/sites/SITE_ID/recipients
curl -H "Authorization: Bearer $STACKTREE_KEY" https://api.stacktr.ee/sites/SITE_ID/feedback GET /sites is list_sites, GET /sites/{id}/share-tokens is list_share_links and GET /sites/{id}/feedback is list_feedback. For names, GET /sites/{id}/recipients goes further than any MCP call: it rolls up opens per person from share links and from ?to= links, with opens, first_seen and last_seen for each, and viewers, where a figure above 1 means the link was passed on. It also returns sent_to, the people you said the page was for, on every plan, which is how a script can list who has not opened it yet. On Studio and Firm each person also carries active_seconds and max_scroll. The schemas are in the spec at api.stacktr.ee/openapi.json.
What we tested
On 2 October 2026 we connected a Grok Bot to Stacktree with the message above. After Allow on Stacktree's sign-in page the bot reported the connector ready, published a test page and made a named link for it. Asked for a read-only version of this report, it called list_sites and then list_share_links on each opened page, and listed the opened pages with their open comment counts. We have not yet watched the routine fire on its schedule, and we have not run it in Claude or ChatGPT, so read your first report next to the page screens in your dashboard, and tell us if they disagree.
Frequent questions
How does the report know who opened a page? +
create_share_link and their name as the label records every open under that name, and list_share_links returns each link with its opens and when it was last opened. Opens through the plain page link are counted but not named. A ?to=Name link, which is what the dashboard makes when you say who a page is for, is named too, but those names show in the dashboard and in the REST call GET /sites/{id}/recipients, not in list_share_links.Which Stacktree plan does the report need? +
list_sites marks each page metrics_locked with no counts or times, and share links come back with no opens, so the agent can say a page has been opened but not when or by whom. Comments work on every plan, Free included. Studio, at $79 a month, adds time on page and scroll depth per person, which the REST recipients call returns and this prompt does not use.Can the scheduled agent change or send anything? +
Does Stacktree not already tell me when someone opens a page? +
Related guides
- Recurring client report The weekly report on one link, and the share links this report reads back.
- See how your shared pages get read What the open counts mean, and the Studio engagement analytics beyond them.
- The client feedback loop How readers leave the comments this report quotes, and how they get closed.
- Publish from Grok Bot The publishing side of the same bot.
- Add Stacktree to Claude The custom connector the Claude prompt runs on.
- The Stacktree MCP server Every tool the connector exposes, read and write.
- All workflows The other four recipes.
Sources and further reading
- xAI: Grok Bot skills and routines ↗ Creating a routine by asking the bot that owns the job, with a schedule, a time zone and what to do when a source is missing.
- xAI: Grok Bot, use the computer and apps ↗ Connectors are installed as plugins and are account-wide, not tied to one bot.
- Anthropic: schedule recurring tasks ↗ Scheduled tasks on paid plans run remotely, use your connectors, and can be set up by describing the task in a chat.
- Anthropic: custom connectors using remote MCP ↗ Adding a remote MCP server as a custom connector, with OAuth or a request header.
- OpenAI: scheduled tasks in ChatGPT ↗ Creating a task from a chat, plan limits, notifications, and the connected apps a task can use.
- OpenAI: developer mode and MCP apps ↗ Which plans can add a custom MCP app, and the read and fetch limit on Pro.
Give each person their own link, then let your agent read the opens.
Comments work on every plan. Names and open counts start on Solo at $19 a month.
Sign up free →