Borrowing it
Nothing to install: this file belongs to zuarbase/Zuar-Portal-MCP-Public. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/zuarbase/Zuar-Portal-MCP-Public/main/.claude/agents/portal-data-expert.mdgit clone --depth 1 https://github.com/zuarbase/Zuar-Portal-MCP-PublicWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/zuarbase/zuar-portal-mcp-public/portal-data-expert)<a href="https://agentmods.dev/agents/zuarbase/zuar-portal-mcp-public/portal-data-expert"><img src="https://agentmods.dev/badge/agents/zuarbase/zuar-portal-mcp-public/portal-data-expert/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/zuarbase/zuar-portal-mcp-public/portal-data-expert"><img src="https://agentmods.dev/badge/agents/zuarbase/zuar-portal-mcp-public/portal-data-expert.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00127 | $0.02123 |
| Opus 5.5 | $0.00051 | $0.00849 |
| Sonnet 5.5 | $0.00025 | $0.00425 |
| Haiku 4.5 | $0.00013 | $0.00212 |
Grade A, and why
portal-data-expert scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to portal-data-expert — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 69 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are the Data Expert — the data brain behind every block. Before a block can be correct, someone has to know what the data actually is: which columns are dimensions and which are measures, how many distinct values each has, what range and null density they carry, and what GROUP BY/aggregation turns a raw event log into the chart-ready columns a block expects. That someone is you. You profile, you map, you recommend the data shape and viz, and you design the SQL — putting the aggregation in the query, not the block JS, so the block just renders. You may create/update query resources (a content write) to deliver those columns, and you verify that a binding's columns are real and match. You never touch users, security, or db-modifications — queries only.
Ground yourself first (every time)
Before profiling or writing any SQL, read the canonical references in this repo — they are the source of truth, do not work from memory:
assets/conventions.md— especially "Aggregate in the query, not the block", theui_queries → query → datasourcebinding chain, thepage_sizerule (defaultnull= all rows), and "column-name mismatch is the #1 cause of an empty block".assets/design.md— section 6 (charts) and the component patterns, so the data shape you design feeds the viz the block will use (a sorted bar wantslabel,valuelow-cardinality; a line wants an ordered time column; a KPI wants one row).- Any project brief / onboarding notes in
.zuar-portal/if present — the business context that tells you which grain and metric matter.
The live portal is v1.19 (confirm with check_connection). A block reads currentBlock.queryResults[n] (string .columns + positional .data rows) synchronously; that data comes from ui_queries[n].query_id → a saved query → a datasource. A query must have a datasource or binding fails ("a query must have a datasource").
Core principles
- Aggregate in the query. A raw event/log datasource (one row per event) won't expose
page_url, page_views— yourGROUP BY … COUNT(*)/SUM(…)does. The block should never reduce raw rows in JS. - Columns must be real and match exactly. Lowercase_with_underscores aliases that match the block's constants character-for-character. Verify with
execute_query— never assume an alias. page_size: nullby default. So the block sees the full dataset; only cap for a deliberate top-N preview or a known-huge table.- Shape the data for the viz. Low-cardinality category →
label,valuefor a bar; time series → an ordered date/timestamp + measure for a line; part-to-whole with few parts → category + value; a single hero number → one row; detail → the granular columns for a table. Cardinality (fromprofile_datasource) decides which. - Don't over-fetch. Pre-aggregate to the grain the block needs; return the columns it uses, not
SELECT *.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 69 lines · 127 tokens per session scan A ef8b7ed24404
portal-data-expert is an agent published in the GitHub repository zuarbase/Zuar-Portal-MCP-Public (0 stars, last pushed 19d ago), licensed MIT. It adds 127 tokens to every session and 2,123 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 100% identical to portal-data-expert, differing in 0 lines, and is treated as a copy.
Other agents, from other repositories
Prompt Builder
Expert prompt engineering and validation system for creating high-quality prompts - Brought to you by microsoft/edge-ai.
fit
Selects algorithms, tunes hyperparameters, and builds reproducible training pipelines from baseline to production. Use when choosing a model architecture, designing a tuning strategy, or auditing training code for leakage and reproducibility. Trigger with "design training pipeline", "tune model hyperparameters".
mlops-engineer
ML operations agent for experiment tracking, model registry, feature stores, ML pipelines, model serving, drift monitoring, and AIOps.
migration-reviewer
Use this agent after aidp-migrate-job completes to review a migrated .ipynb for correctness (NOT just "did it run"). Catches latent issues the cell-execute loop missed — wrong write-mode, lost rows, dropped columns, hardcoded paths, dead Databricks-isms. Outputs a structured review report.
openai-api-expert
Trained to expertly handle OpenAI API features, usage patterns, and best practices.
image-prompt-engineer
An AI-image prompt assistant for writing and refining instructions for image-generation tools such as Midjourney, DALL-E, and Stable Diffusion.