Skip to main content
Glama

create_report

Upload a new HTML report to Comma and get back an absolute share_url to give the user. By default anyone with the link can open the report (visibility='public'; share links are not indexed by search engines) and comment on it after a free sign-in (public_permission='comment'). Pass visibility='private' to keep it owner-only, or public_permission='view' for a read-only link. To include images or other files the HTML references by relative path (e.g. <img src="images/chart.png">), pass them in assets — they're uploaded and the HTML's relative refs are rewritten to public URLs automatically, all in this one call. Returns the report id, visibility, public_permission, and absolute edit_url (/r/:id) and share_url (/p/:id). Pass producer_name (e.g. 'Claude Code', 'Cursor') so the public share view can attribute the report to the agent that produced it. Only pass source_recipe.prompt when the user asks; it is shown to every viewer.

Input Schema

NameRequiredDescriptionDefault
htmlYesFull HTML for the report (≤ 5 MB).
titleNoOptional title. Defaults to 'Untitled report'.
assetsNoOptional inline assets (images, fonts, CSS, JS, …) the HTML references by *relative* path. Each is uploaded and the report's matching relative refs (src/href/srcset/url(...)) are rewritten to the stored public URLs — so you can pass HTML containing `<img src="images/chart.png">` plus that asset in a single call instead of creating the report, uploading, and patching the HTML yourself. Re-uploading the same relative_path replaces it.
visibilityNoWho can reach the share link. Defaults to 'public' (anyone with the link). 'registered' = any signed-in user; 'private' = owner only. For 'team' or 'domain' (company email, with allowed_email_domains) audiences, create then call set_report_sharing.
descriptionNoOptional one-line description.
producer_urlNoOptional http(s) URL the watermark chip links to (e.g. https://claude.ai/code).
producer_nameNoDisplay name of the agent that produced this report (e.g. 'Claude Code', 'Cursor', 'ChatGPT'). Surfaced as a watermark chip on /p/:id.
source_recipeNoStructured payload (prompt + tools, etc.) the public viewer can use to re-run the same recipe on their own data. Convention: { prompt: string, tools?: string[] }. Shown to every viewer of the share link — only pass it when the user asks.
producer_icon_urlNoOptional http(s) URL to a small square icon for the producer.
public_permissionNoWhat link/anonymous visitors may do. Defaults to 'comment' (commenting needs a free sign-in). 'edit' needs a token with the 'sharing' scope. Ignored (forced to 'none') when visibility='private'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does so well: it discloses that share links are not search-indexed, that commenting requires a free sign-in, that relative asset refs are rewritten to public URLs in one call, that re-uploading a relative_path replaces it, and that source_recipe.prompt is visible to every viewer. It omits auth/scope requirements and rate limits, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded: the core action and the key default come first, followed by overrides, asset behavior, and the return shape. It is somewhat long for a schema that already documents every parameter, so a small amount of overlap with the schema keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, nested-object tool with no output schema, the description covers the essentials: required vs optional intent, default and enum behavior, the asset-rewriting workflow, and the returned fields (report id, visibility, public_permission, edit_url, share_url). Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: the effect of visibility and public_permission on actual viewer behavior, the purpose of producer_name (public attribution watermark), and the warning that source_recipe.prompt is shown to all viewers and should only be passed on request.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource+outcome: 'Upload a new HTML report to Comma and get back an absolute share_url.' It implicitly separates itself from siblings by noting that assets can be passed in the same call 'instead of creating the report, uploading, and patching the HTML yourself,' distinguishing it from upload_report_asset and create_report_from_url.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States defaults (visibility='public', public_permission='comment') and the exact overrides to use for owner-only or read-only links, and explicitly routes team/domain audiences to the sibling set_report_sharing ('create then call set_report_sharing'). It also conditions source_recipe.prompt on 'only pass it when the user asks.' No explicit exclusion of create_report_from_url by name, so not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.