Agent analysis, as a page you can send.
Send structured blocks from any agent or job. We render them into a page your team can open, share, and let expire.
Analyzed last week's ad spend.
1,248 rows scanned, 3 anomalies flagged.
Turn automated work into a page people can use.
Any agent, script, or scheduled job can send structured blocks and return a shareable report URL without generating HTML or maintaining another dashboard project.
Any automated job can return a report
Run the script you already schedule. It prints a report URL alongside the rest of the job output.
- Works from cron, Airflow, workers, internal tools, or agent runs
- Build the report from data the job already collected
- Log, post, or email the returned URL
Blocks define the page, not arbitrary HTML
The job provides metrics, charts, tables, and actions. Artifacts owns how those blocks become a page.
- A validated schema decides what can render
- No model-written markup, scripts, or one-off styles
- Workspace layout and theme stay consistent across every report
A link, not a wall of text
The answer stops being a message someone has to scroll past.
- Post it from a bot, an email, a ticket, or a cron job
- Opens on a phone without a login to your warehouse
- Access and link controls on every report
Temporary by default
Most questions are asked once, so most reports should not outlive the answer.
- Set an expiry per report, or persist the ones that matter
- No dashboard graveyard nobody wants to be the one to delete
- Metadata and tags make the kept ones findable
Create and revise dashboards through MCP
Expose dashboard creation to the coding harness your team already uses, then keep refining the same report in conversation.
- Create a dashboard with one MCP tool call
- Update blocks, ordering, and grouping without replacing the URL
- Use Claude Code, Codex, Cursor, OpenCode, or another MCP client
A report is one call from the job that already has the data.
Official clients for TypeScript, Python, and Go.
- 07:00
The job finishes its query
Cron, Airflow, a Slack bot, an agent tool call - whatever already runs.
- +0.1s
Blocks are built from rows you have
Metrics, charts, and tables come straight from the result set. No templating.
- +0.4s
reports.create() validates and renders
The spec is checked against your schema, then rendered with the workspace theme.
- +0.5s
One link goes to the channel
Stakeholders open a page, not a CSV. It expires in 72 hours unless you keep it.
{
"id": "rep_b517af8ae9447723",
"url": "https://zenitya.com/r/b517-af8ae9447723",
"status": "active",
"expiresAt": "2026-08-16T07:00:00Z"
}import { Artifacts, b } from "@zenitya/artifacts";
const zen = new Artifacts();
const week = await warehouse.campaignWeek();
const report = await zen.reports.create({
title: "Weekly campaign review",
expiresIn: "72h",
metadata: { source: "airflow", tags: ["marketing"] },
blocks: [
b.metric({
title: "Spend",
value: week.spend,
format: "currency",
currency: "USD",
delta: b.delta(week.spend, week.prevSpend, { lowerIsBetter: true }),
}),
b.chart.verticalBar({
title: "Conversions by day",
labels: week.days,
series: { Conversions: week.conversions },
}),
b.table.from(week.topCampaigns, {
title: "Top campaigns",
columns: { name: "Campaign", roas: { label: "ROAS", align: "right" } },
}),
b.actions({ title: "Next actions", items: week.recommendations }),
],
});
await slack.post("#growth", `Weekly review is up: ${report.url}`);Everything a generated report needs to hold up.
JSON schema
One spec, validated before anything renders.
Charts
Bar, line, area, and pie from labels and series.
Tables
Column labels, alignment, and formatting per field.
Actions
Next steps as a first-class block, not a bullet.
Images
Screenshots and generated figures inline.
Themes
Workspace presets applied to every report.
Access controls
Who can open a link, and for how long.
Expiry
Temporary by default, persisted on request.
Three SDKs
TypeScript, Python, and Go, all typed.
Dataframes
Pandas and Polars accepted directly.
Built for cron
Idempotency keys for jobs that retry.
Live blocks
Sections that refresh from a source.
Report URLs
Stable, shareable, and safe to forward.
No agent HTML
Nothing the model writes reaches the DOM.
No agent to send the report?
Zenitya Agent is the teammate side of the same idea: it runs your skills on a schedule and hands the result straight to Artifacts.
- Skills your team writes once and invokes with a slash command.
- Schedules that produce a Monday report without anyone asking.
- Sandboxed tools that read from the systems the analysis needs.
Give one recurring analysis a proper home.
Bring us the script, agent, or job that already has the data. We will help turn its output into a page people actually want to open.
Questions we would ask before using it.
Is this a BI dashboard tool?
No. Zenitya Artifacts is for generated business reports: temporary by default, shareable by URL, and persisted only when a report becomes important.
Who creates the report?
Agents, Slack bots, scripts, scheduled jobs, or internal tools send structured content. Business users receive a readable report link.
Why not let the agent generate HTML?
Generated HTML is inconsistent and hard to inspect. Here the agent provides content while your organization controls layout, blocks, theme, and access.
Is there an API or SDK?
Yes. A REST API with official clients for TypeScript, Python, and Go. Each ships typed block builders, retries with idempotency keys, and local schema validation, so a report is one reports.create() call.
How do I turn a Slack bot answer into a report?
Instead of a long Slack response, the bot creates a report and replies with the link. The team gets charts, metrics, tables, and actions on one page.
Can I use it for scheduled reports?
Yes. It is built for recurring jobs: morning checks, weekly campaign reviews, account briefs. Idempotency keys keep retries from creating duplicates.
Can reports use live data?
Yes. A report can mix snapshot blocks with live blocks that refresh from a source when a section needs current data.
Is it useful if we already have BI tools?
Yes. BI is good for persistent dashboards. Artifacts covers ad hoc analysis, agent output, and workflow summaries that do not deserve a permanent BI build.
Can every team or client get a different design?
Yes. Choose a predefined theme or apply one for a workspace or client so every generated page stays consistent.
What about access and privacy?
Report visibility, link controls, and expiry are part of the product. A link can be scoped to your workspace rather than being public.
zenitya