Install
openclaw skills install @exceldashboard.ai/exceldashboard-reportPair MCP with the report Skill: your Agent analyzes and verifies Excel or CSV data, then MCP creates visual reports, tracks progress, and returns live previews. Editing and PowerPoint export take place in the website editor.
openclaw skills install @exceldashboard.ai/exceldashboard-reportUse the current client's file-reading, computation, and web-search capabilities to complete the analysis. ExcelDashboard AI generates reports from the resulting outline. This Skill orchestrates only two MCP tools: create_report and get_report.
The official connection guide is https://www.exceldashboard.ai/mcp and the Streamable HTTP endpoint is https://api.exceldashboard.ai/mcp. Installing these instructions does not configure MCP or complete browser OAuth. Discover the two tools on the authorized ExcelDashboard AI connection before calling them; reading documentation is not proof of connection.
These instructions are written in English. User-facing replies and report content should follow the user's requested language; the instruction language does not require English report content.
| Tool | Parameters | Result |
|---|---|---|
create_report | Required outline: a nonempty Markdown string following the outline reference. Optional locale: a string, default zh-CN. | job_id, status: "running", report_url, and poll_after_seconds. |
get_report | Required job_id: the string returned by creation. | status, stage, page counts, report_url, and completion or failure details. |
Create using {"outline":"<complete Markdown following references/outline-format.md>","locale":"en"}. The outline text in this example is a placeholder: replace it with the complete analyzed report outline. Query using {"job_id":"<returned job_id>"} and replace the placeholder with the actual returned value.
A creation result has the form {"job_id":"<job UUID>","status":"running","report_url":"<actual preview URL>","poll_after_seconds":15}. Status results also include operation, stage, completed_pages, pages_started, total_pages, report_id, share_url, error_code, and error_message; some values can be null. poll_after_seconds is null after the job ends. Only completed proves success; failed ends tracking with an error. Do not call an editing tool: none is exposed by this connector.
Invalid parameters return a tool error with error_code: "INVALID_ARGUMENT" and message. Correct the parameters before retrying. After a creation timeout, use the known job ID if one was returned; if no ID was received, explain that submission is uncertain and ask before creating another job.
outline; do not upload raw detail files. Put sources, definitions, and uncertainty on the relevant outline pages. No separate evidence field is needed.# Main title. Briefly explain the analysis approach and planned report if useful. When the user has already requested report creation, do not add a separate outline approval step.workspace_id. If the connection is unauthorized, ask the user to connect ExcelDashboard AI in the client and select a workspace. Switching workspaces requires authorization again. Do not ask users to send tokens or workspace IDs in the conversation.create_report with the complete outline and, when needed, locale (default: zh-CN). Each call submits a new job; do not automatically retry creation. Save the returned job_id and immediately show the returned report_url as a "View report" link. If a callable built-in browser tool is available, open this URL before the first get_report call and save the tab identifier; do not wait until completion to open it. If no such tool exists or opening fails, explain this and continue tracking the job. ExcelDashboard AI automatically creates a public read-only share when generation completes; users do not need to share manually in the frontend. The preview's Edit button separately verifies the signed-in account and editing permissions.get_report({"job_id":"..."}). Within the client's available execution time, poll serially using the returned poll_after_seconds, or approximately 15 seconds if absent. Do not query the same job concurrently. Report actual progress using stage, completed_pages, pages_started, and total_pages; do not invent percentages. After every get_report result, update the user-visible progress and refresh the same built-in browser tab, keeping the returned preview link in the update. If the client cannot keep waiting, give the user the job_id and preview link. The page updates its own progress; resume by querying the existing job next time rather than creating the same report again.status and report_url after each get_report result. When status is completed, stop polling immediately, present the link using the rules below. Do not continue saying that report generation is pending. When status is failed, explain error_code and error_message; submit a new job only if regeneration is needed after the cause has been addressed. Status queries do not modify the job.report_url as a "View report" link. Do not replace the original preview entry point with share_url, generated HTML, or a local file after completion.report_url in the results area. Save the tab or page identifier after the first successful open. Refresh or update that same page after every get_report result, including completion. Do not repeatedly create tabs or substitute system-browser commands.report_url, which includes the editing entry point. share_url is the underlying read-only /share/iframe/<share_id>?b=report share address; provide it separately only when the user requests sharing or embedding. Use the exact returned URL without inserting spaces or rewriting it.get_report returns a nonempty HTTP/HTTPS report_url, use the original returned URL in a Markdown link. At completion, reply with the equivalent of Report generated: [View report](actual report_url) in the user's language. If the report title is known, it may be used as the link label. actual report_url is an explanatory placeholder and must be replaced with the real returned URL.report_url during generation, include [View report](actual report_url) in progress updates and state that generation is still in progress. Claim completion only when status is completed; the existence of a link does not prove completion.report_url is empty, show only actual progress. Do not construct a link from job_id, report_id, or a domain. If the job has completed without a link, explain that the report is complete but the service did not return an opening link, retain the job ID for investigation, and stop waiting for generation.MCP does not provide a report editing tool. If the user requests changes to an existing report, provide its returned report_url and direct them to the preview's Edit button. The frontend verifies the signed-in account and editing permissions before opening the editor. Do not invent an editing tool or silently create a replacement report. Create a new report only when the user requests a separate report.
NOT_FOUND: distinguish job_id from report_id, then check the current user's access and workspace permissions.job_id first to confirm its final status. Submit a new creation job only after failure is confirmed and its cause has been addressed.