# Have your agent publish its own run report as a link · Stacktree

Source: https://stacktr.ee/workflows/agent-publishes-its-own-report

[Skip to content](#main) [Stacktree](/)[Developers](/developers)[Agents](/agents)[Docs](/docs)[Use cases](/use-cases)[Pricing](/pricing)[Blog](/blog)[Dashboard](https://app.stacktr.ee)[Sign in →](https://app.stacktr.ee)      By [ Steve Smith ](/about) · Founder, Stacktree  ·  Last updated September 20, 2026          workflow

#  Have your agent publish its own run report as a link.

   The run ends. Instead of a wall of terminal text, the agent renders an HTML report of what it did and publishes it to a private URL it hands back to you. One bookmark becomes the standing status of everything it does while you are elsewhere.

     install npx stacktree-install
Copy
  [ Get started free ](https://app.stacktr.ee/?join=1&from=seo_workflows_agent_publishes_its_own_report)   No card · 3 pages free · about a minute

##  How do you get an agent to report its own runs?

Tell the agent to end every run by rendering an HTML report and publishing it. Over MCP it calls publish_html and returns a private link you can open anywhere, phone included. Point later runs at the same page with update_site and you get one standing status URL, always current.

## The artifact is the audit

 As agents run longer without supervision, the thing you actually check is not the transcript, it is whatever the agent can show you. A rendered run report, what was asked, what was done, what changed, what needs a human decision, is auditable in ninety seconds. The transcript it summarizes is not. That makes the publish step part of the run, not an afterthought: the report is how the run gets accepted.

 Here is [a live example](https://stacktr.ee/p/ub7WPeq3VL1vsMkThbeMBQ/): an incident postmortem, the run-report shape exactly, published as a private Stacktree page. More finished shapes are in [the examples gallery](/examples).

## Typical flow

  - Once: set the agent up with npx stacktree-install, or paste the one-line prompt below into it.
 - In the task instruction, add the closing step: "when you finish, render an HTML report of what you did and publish it as a private link."
 - The agent works, renders the report, and calls publish_html. The pre-flight scan keeps keys and other secrets from going out with it.
 - It ends the run by handing you the URL. You open it on whatever device you are on; nobody needs an account.
 - Later runs either call update_site on the same page (one standing status URL) or publish fresh pages with an expiry (an audit trail that cleans itself up).

## One standing page, or one page per run

 Both patterns are in real use, and they solve different problems.

  - One standing page. The agent keeps one site id and replaces the content every run. You bookmark a single URL; it is always the latest state. Replaces are free and do not spend page slots, so a nightly run costs one page, not 365.
 - One page per run. Each run publishes its own report with a 7 or 30 day expiry. You get a browsable trail of what the agent did on which day, and old runs remove themselves.
  If the agent works for clients, file each report under the client with `client: "Acme"` and it lands behind that client's space, alongside everything else delivered to them.

## Teach it once, keep it

 If your agent supports skills, the publish behavior installs as one:

```
`npx skills@latest add stevysmith/stacktree-skill`
```

 The skill carries the instructions and the publish script, so any run can end with a link without re-explaining the steps. The [skills page](/skills) covers what it includes.

## Run it now

### 1. Paste one line into your agent

```
`Fetch and follow https://stacktr.ee/prompt.md, then publish a run report of what you just did as a private link.`
```

 Works in any agent that can fetch a URL. [The instructions](/prompt.md) are plain Markdown you can read first.

### 2. Install once

```
`npx stacktree-install`
```

 Configures Claude Code, Cursor, Codex CLI, OpenCode, or Amp. On Claude.ai, add the connector URL `https://api.stacktr.ee/mcp`; [one-click setup](/claude-ai-connector).

### 3. No signup: curl the report

```
`curl -X POST https://api.stacktr.ee/sites -F file=@run-report.html`
```

 Publishes anonymously: a private URL that lives 24 hours, no account and no key. Enough for tonight's run; claim the page if the habit sticks.

FAQ

## Frequent questions

     Why a published report instead of reading the transcript? +  Because a 400-message transcript is not something you audit from a phone. A rendered report is: what was asked, what was done, what changed, what needs a decision. The link opens anywhere, and if the agent runs while you are away, the report waiting at a known URL is the difference between checking in and scrolling back.   Can the agent do this with no account at all? +  Yes. The anonymous path needs no key: the report publishes to a private URL that lives 24 hours, and the response carries a claim token to adopt it later. What the anonymous path cannot do is update in place, so a standing status page needs an account and an API key the agent uses.   What stops the agent publishing a page with secrets in it? +  A pre-flight scan checks the file for API key prefixes, JWTs, card numbers, and emails before it goes live, and on the MCP publish path it blocks by default rather than warns. A regex net is not a guarantee, so the honest advice stands: run reports should quote results, not raw configs.   Does whoever opens the report need an account? +  No, never. The unguessable URL opens in any browser. Add a passcode or an email-domain gate if the run touched client data, and the viewer still never signs up for anything.
Keep reading

## Related guides

   -  [ Publish HTML from Claude Code Add Stacktree as an MCP server and Claude Code will publish the HTML it writes to a private, unguessable URL. ](/claude-code)
-  [ Host AI-generated reports The report-hosting primitive this workflow automates. ](/host-ai-reports)
-  [ Agent-loop hosting Why replace-in-place URLs matter when an agent iterates. ](/agent-loop-hosting)
-  [ Recurring client report The client-facing sibling: same loop, sent outward on a schedule. ](/workflows/recurring-client-report)
-  [ Agent skills Install the publish behavior once and every run can end with a link. ](/skills)
-  [ Do AI agents leak secrets? What the pre-flight scan catches, and what a regex net cannot promise. ](/blog/do-ai-agents-leak-secrets)
-  [ All workflows The other three recipes. ](/workflows)

References

## Sources and further reading

   -  [ Anthropic Skills format ↗ The SKILL.md convention the publish skill follows, read by Claude Code and compatible agents. ](https://code.claude.com/docs/en/skills)
-  [ stacktree-skill on GitHub ↗ The skill source: instructions plus the publish script. ](https://github.com/stevysmith/stacktree-skill)
-  [ Model Context Protocol ↗ The protocol behind publish_html and update_site. ](https://modelcontextprotocol.io)

##  End tonight's run with a link.

 One paste sets the agent up. The first report publishes with no account and lives 24 hours.

 [ Sign up free → ](https://app.stacktr.ee/?join=1&from=cta_workflows_agent_publishes_its_own_report)   install npx stacktree-install
Copy
       Private hosting for the HTML your agents make.

[](https://betalist.com/startups/stacktree?utm_campaign=badge-stacktree&utm_medium=badge&utm_source=badge-featured)[Featured on](https://devhunt.org/tool/stacktree)[](https://buildlist.io)[Get started free](https://app.stacktr.ee/?join=1)

## Product

- [Templates](/templates)
- [Example deliverables](/examples)
- [Custom domains](/custom-domains)
- [Client feedback](/client-feedback-loop)
- [One-time links](/one-time-view-links)
- [See how pages get read](/page-engagement)
- [Made with Stacktree](/made-with)
- [Security](/security)
- [Watch the demo](/demo)

## Agents

- [All integrations](/agents)
- [Claude Code](/claude-code)
- [OpenAI Codex](/codex)
- [Cursor](/cursor)
- [Claude.ai connector](/claude-ai-connector)
- [MCP server](/mcp-publish-html)
- [Deploy from Claude Code](/deploy-html-from-claude-code)
- [Skills](/skills)
- [Slack app](/slack)
- [n8n node](/n8n)
- [Agent payments (x402)](/x402)

## Alternatives

- [All comparisons](/alternatives)
- [Head-to-head comparisons](/compare)
- [Tiiny Host](/tiiny-host-alternative)
- [GitHub Pages (private)](/github-pages-private-alternative)
- [Vercel](/vercel-alternative-for-agents)
- [ngrok](/ngrok-alternative-for-html)
- [Display.dev](/display-dev-alternative)
- [Static.app](/static-app-alternative)
- [OpenAI Codex Sites](/openai-codex-sites-alternative)
- [here.now](/here-now-alternative)
- [Shippage](/shippage-ai-alternative)
- [Best private hosting](/best-private-html-hosting)

## Use cases

- [All use cases](/use-cases)
- [Share with clients](/share-with-clients)
- [Send a file to a client](/share-html-file-with-client)
- [Share Claude artifacts](/share-claude-artifacts)
- [Share Jupyter notebooks](/share-jupyter-notebook-html)
- [Host Storybook privately](/host-storybook-privately)
- [Architecture diagrams](/share-architecture-diagrams)
- [AI-generated reports](/host-ai-reports)
- [Internal HTML tools](/internal-tool-hosting)
- [Private HTML hosting](/private-html-hosting)
- [Vibe-coded page hosting](/vibe-coding-hosting)
- [Leave a website builder](/website-builder-migration)

## Learn

- [Blog](/blog)
- [Glossary](/glossary)
- [FAQ](/faq)
- [Agent-loop hosting](/agent-loop-hosting)
- [Why agents need a publish primitive](/blog/why-agents-need-a-publish-primitive)
- [MCP servers explained](/blog/mcp-servers-explained-for-developers)
- [What changed in the 2026-07 MCP spec](/blog/mcp-2026-spec-changes)
- [Sites in Codex explained](/blog/sites-in-codex-explained)
- [Private-by-default hosting](/blog/private-by-default-html-hosting)
- [An agent paid us $1 (x402)](/blog/agent-paid-to-provision-itself)
- [When a loop hits a paywall](/blog/loop-engineering-paywall)
- [Pricing](/pricing)
- [Self-host (new)](/self-host)
- [Changelog](/changelog)
- [Docs](https://stacktr.ee/docs)
- [About](/about)
© 2026 Stacktree · stacktr.ee

[Privacy](/privacy)[Terms](/terms)[Security](/security)[Dashboard](https://app.stacktr.ee)[npm](https://www.npmjs.com/package/stacktree-mcp)[Sitemap](/sitemap.xml)[llms.txt](/llms.txt)[API spec](/openapi.json)

---
Full markdown summary of the Stacktree marketing surface: https://stacktr.ee/llms-full.txt
