By · Founder, Stacktree · Last updated
workflow

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.

Get started free

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

  1. Once: connect Stacktree to the agent at https://api.stacktr.ee/mcp and sign in.
  2. 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.
  3. Paste the prompt for your agent (below) and let it set the schedule.
  4. Each morning it calls list_sites, then list_share_links on the pages opened in the last 24 hours, then list_feedback on the pages with open comments, to read what was said.
  5. 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_sites returns 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 what list_feedback is for. The list is paged: while has_more is true, the agent calls again with next_before and next_before_id as before and before_id. A row with deleted_at set is a page that has stopped serving.
  • list_share_links returns 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_feedback returns 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.

FAQ

Frequent questions

How does the report know who opened a page? +
From links you made for one person. A share link created with 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? +
Solo, at $19 a month, for the whole report. Opens are viewer numbers, and those start on Solo: on Free, 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? +
The prompt keeps it to three calls that are marked read-only, and tells it never to publish, update, resolve, revoke or send. The connection itself can do more: Stacktree's sign-in asks to read your pages and to publish and change them, because the same connector publishes from chat. If your agent can ask before write actions, leave that on.
Does Stacktree not already tell me when someone opens a page? +
By email, yes: when a page is first opened, the first time each named person opens it on Solo and up, and in a daily email when your pages have had activity. There is no webhook for opens, so an agent finds out by reading, which is what this prompt does once a day. What changes is where the answer lands: in the chat you already use, with the comments beside it, where you can ask a follow-up question.
Keep reading

Related guides

References

Sources and further reading

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 →