{"id":7395,"plugin_id":"plugin_asdk_app_69248819fa4c81918047c4b42b1f8823","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:50:29.913Z","digest":"2ac19945617b148c10de9df9704b2e0547f34c1a340376791c922b2daa01ec57","against":null,"payload":{"name":"medalist-rating-analyzer","description":"Analyzes a fund's Morningstar Medalist Rating using live Morningstar MCP data, including pillar scores, rating history, and analyst research. Use when asked to rate, analyze, or look up a specific fund by ticker, name, or Morningstar ID.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":512},{"relative_path":"assets/icon.png","size_in_bytes":16548},{"relative_path":"references/follow-up-questions.md","size_in_bytes":1802},{"relative_path":"references/full-workflow.md","size_in_bytes":19323},{"relative_path":"references/historical-rating-questions.md","size_in_bytes":4588},{"relative_path":"references/normalized-data.md","size_in_bytes":4531},{"relative_path":"references/pillar-input-questions.md","size_in_bytes":1329},{"relative_path":"references/pillar_data_query_reference.md","size_in_bytes":1798},{"relative_path":"references/pillar_rating_input_data.md","size_in_bytes":7283},{"relative_path":"scripts/__init__.py","size_in_bytes":225},{"relative_path":"scripts/data_normalizer.py","size_in_bytes":30864},{"relative_path":"scripts/formatter.py","size_in_bytes":40533},{"relative_path":"scripts/pillar_data_query.py","size_in_bytes":2668}],"skill_md_contents":"---\nname: medalist-rating-analyzer\ndescription: Analyzes a fund's Morningstar Medalist Rating using live Morningstar MCP data, including pillar scores, rating history, and analyst research. Use when asked to rate, analyze, or look up a specific fund by ticker, name, or Morningstar ID.\n---\n\n# Medalist Rating Analyzer\n\nAnalyzes Morningstar Medalist Ratings using the **Morningstar MCP server**.\nIncludes only two steps:\n\n1. **Search** — resolve a fund name or ticker to a `morningstar_id`\n2. **Fetch** — call the MCP server once to get all research/rating data for that fund\n\nDo not call MCP tools if you have already fetched the same data for the same `morningstar_id` in the same session — keep it in context and answer all follow-up questions from that data.\nDo not expose Morningstar internal data id values (e.g., `MMR01`) in your final answers — those are for your internal use only when reasoning about which data to pull and how to answer.\nDo not expose internal routing/decision logic for choosing a rating formula. Keep that reasoning private unless the user explicitly asks methodology details.\n\n---\n\n## Plugin Domain Rules\n\nMorningstar domain rules for this skill:\n\n- For fund lookups by name/ticker, call `morningstar:morningstar-id-lookup-tool` first.\n- When calling `morningstar:morningstar-id-lookup-tool`, pass only the fund identifier text (ticker, exact Morningstar ID, or fund name), not the full user sentence.\n- If the user provides a direct Morningstar ID, skip lookup and proceed directly to the fetch workflow with that ID.\n- When MCP-backed formatter output contains a \"Disclosure\" section with separator lines (────), you MUST reproduce that disclosure text EXACTLY AS PROVIDED in the tool output, word-for-word, without paraphrasing, summarizing, or omitting any sentences. **If it appears more than once in the formatter output, reproduce it that many times, in the same positions — never collapse repeated occurrences into one.** The disclosure text is legally required and must be complete and verbatim.\n- **Disclosure handling — never add manually.** `fmt.full_report()` and `fmt.fund_header()` handle all disclosure placement automatically based on `data[\"disclosure_type\"]`. Do NOT write or append a disclosure block yourself anywhere in the response. If you find yourself typing the disclosure text, stop — that means the formatter already placed it.\n- If the needed fund data is already provided in session context, answer follow-up questions about the same fund directly and do not call Morningstar MCP data tools again unless the user asks about a different fund.\n- When presenting historical pillar score output from `morningstar:morningstar-data-tool`, do NOT omit any rating type labels (e.g. `Analyst Assigned`, `Algorithmic`, `Quantitative`). The type labels must appear in your response exactly as they appear in the tool output.\n- For comparison requests, fetch each fund, then synthesize a comparison.\n- Never invent fund data; rely on tool output and provided context.\n- Show complete relevant tool-backed output; do not provide empty sections.\n- Avoid fenced code blocks in user-facing answers; write formulas as plain text.\n- If a tool explicitly returns an MCP-service-unavailable error, respond exactly: \"Sorry, the Morningstar MCP service is not available at this moment. Please try again later.\"\n- Do not infer MCP outage from user text or model assumptions; only use the outage response when a tool call indicates service unavailability.\n\n### Routing logic for fund-specific methodology questions\n\n- Keep formula-routing logic internal unless the user explicitly asks for methodology details.\n- This is a deterministic decision, not a judgment call — never re-derive it by reasoning over the flags in prose. Call `select_formula(domicile_country, is_index_fund, is_australian_superannuation_fund)` from `scripts/data_normalizer.py` (also exported as `scripts.select_formula`) and use its return value directly: `\"Active\"`, `\"Passive\"`, `\"Superannuation\"`, or `\"clarification_needed\"`.\n- Use routing flag values injected in the current-fund context block (domicile_country, is_index_fund, is_australian_superannuation_fund) — these come directly from the data tool. Do NOT infer or default missing values before passing them to `select_formula`.\n- If the result is `\"clarification_needed\"`, follow the clarification instruction in the routing flags block (`Formatter.routing_flags()` in `scripts/formatter.py`) — that is the single canonical source for the exact clarification wording.\n\n---\n\n## Data Source — Morningstar APIs\n\nData comes from Morningstar MCP.\n\nThree MCP tools are used:\n\n| Tool | Purpose |\n|------|---------|\n| `morningstar:morningstar-id-lookup-tool` | Resolve ticker / name → `morningstar_id` |\n| `morningstar:morningstar-analyst-research-tool` | Fetch analyst research, pillar narratives, and Medalist Rating |\n| `morningstar:morningstar-data-tool` | Supplement with structured datapoints (current rating/pillars, fees, historical overall + pillar timelines) |\n\n**If the MCP server is unreachable, inform the user.**\n\n---\n\n## Reference Files\n\nRead only the reference required for the request. Every reference below is one hop from this file.\n\n| Situation | Read |\n|-----------|------|\n| A new fund, a different fund, or no current-fund `data` in session | [references/full-workflow.md](references/full-workflow.md) — lookup, fetch, normalization, current snapshot, and pre-response workflow |\n| A standard question about a fetched fund: full report, current rating, price/fees, a current pillar, or fund identity | [references/follow-up-questions.md](references/follow-up-questions.md) — formatter routing and follow-up examples |\n| A historical rating/pillar question, a date-bounded question, or an explanation of a rating change | [references/historical-rating-questions.md](references/historical-rating-questions.md) — history IDs, date filtering, and change-explanation rules |\n| How a current Parent, People, or Process pillar is calculated | [references/pillar-input-questions.md](references/pillar-input-questions.md) — the input-data retrieval workflow |\n| The precise shape or ownership of a normalized `data` field | [references/normalized-data.md](references/normalized-data.md) — complete `data` schema |\n| The input datapoint-ID table or `get_pillar_data_id` usage details | [references/pillar_rating_input_data.md](references/pillar_rating_input_data.md) or [references/pillar_data_query_reference.md](references/pillar_data_query_reference.md) |\n\nFor a general Medalist Rating methodology question that is not tied to a specific fund, use `morningstar:morningstar-articles-tool` with `content_filter: \"methodology\"`; do not load a fund workflow reference.\n\nExecutable code lives in `scripts/` (`data_normalizer.py`, `formatter.py`, `pillar_data_query.py`) — import and call these, don't read them as documentation; the reference files above are the documentation.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}