← Moody's Credit MCPCONTENT HISTORY

Update to Moody's Credit MCP

Snapshot Sep 30, 2026 · 22:55 UTC · version 3.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "earnings-brief",
  "description": "Produce an Earnings Call Summary HTML report for 2–5 companies using Moody's GenAI MCP tools. Use this skill whenever the user asks to summarize earnings calls, generate an earnings call summary, analyze earnings transcripts across peers, or create an earnings call report. Trigger even if they just name companies and mention \"earnings\" or \"transcript\".",
  "included_files": [
    {
      "relative_path": "__MACOSX/._SKILL.md",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/._assets",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/._evals",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/._references",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/assets/._cover_img_0.png",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/assets/._cover_img_1.png",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/assets/._cover_img_2.png",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/assets/._template.html",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/evals/._evals.json",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/references/._report-spec.md",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/references/._shared-citations.md",
      "size_in_bytes": 163
    },
    {
      "relative_path": "__MACOSX/references/._shared-template.md",
      "size_in_bytes": 163
    },
    {
      "relative_path": "assets/cover_img_0.png",
      "size_in_bytes": 24156
    },
    {
      "relative_path": "assets/cover_img_1.png",
      "size_in_bytes": 529902
    },
    {
      "relative_path": "assets/cover_img_2.png",
      "size_in_bytes": 128770
    },
    {
      "relative_path": "assets/template.html",
      "size_in_bytes": 15489
    },
    {
      "relative_path": "evals/evals.json",
      "size_in_bytes": 3149
    },
    {
      "relative_path": "references/report-spec.md",
      "size_in_bytes": 18150
    },
    {
      "relative_path": "references/shared-citations.md",
      "size_in_bytes": 5814
    },
    {
      "relative_path": "references/shared-template.md",
      "size_in_bytes": 8111
    }
  ],
  "skill_md_contents": "---\nname: earnings-brief\ndescription: >\n  Produce an Earnings Call Summary HTML report for 2–5 companies using Moody's GenAI MCP tools.\n  Use this skill whenever the user asks to summarize earnings calls, generate an earnings call\n  summary, analyze earnings transcripts across peers, or create an earnings call report. Trigger\n  even if they just name companies and mention \"earnings\" or \"transcript\".\n---\n \n# Earnings Brief Skill\n \nGenerates a professional HTML report (styled like a Moody's earnings call summary PDF) for 2–5\ncompanies by pulling data from multiple `Moodys MCP server` MCP tools and consolidating 13\nstructured sections plus a hardcoded table of contents into a single HTML artifact.\n \nThe workflow is **single-artifact delivery**: gather all data, then write the entire filled\nHTML document to a single `.html` file in `/mnt/user-data/outputs/` and actively render it to\nthe user with **both** `present_files` and `visualize:show_widget`. The rendered HTML artifact\nis the deliverable — writing the file without rendering it is a failed run.\n \n> ## ⚠️ CRITICAL — NON-NEGOTIABLE OUTPUT CONTRACT\n>\n> **The LLM MUST deliver the final report as a single standalone HTML artifact file that it\n> then actively renders on screen.** Creating the file is only half the job — a file that is\n> written but never surfaced is a failed run, and is the single most common failure mode for\n> this skill. Specifically:\n>\n> - The LLM **MUST** write the **complete, standalone HTML document** (`<!doctype html>` →\n>   `</html>`), with every section from the streaming protocol populated inline, to a single\n>   `.html` file in `/mnt/user-data/outputs/` using the `create_file` tool.\n> - The LLM **MUST** then render that file with **both** display tools — `present_files`\n>   **and** `visualize:show_widget` — before ending its turn. Firing both renderers is what\n>   guarantees the report always appears even if one tool is unavailable.\n> - The LLM **MUST NOT** end its turn after `create_file` without having called the display tools.\n> - The LLM **MUST NOT** emit the report inline as a fenced ` ```html ` code block, as prose,\n>   Markdown, JSON, attachments, or links. The rendered HTML artifact itself is the answer.\n> - The LLM **MUST NOT** split the report across multiple files, multiple messages, partial\n>   snippets, or summaries.\n> - If data gathering fails partially, still produce the single HTML artifact file with the\n>   best-available content. When the earnings call transcript for a company cannot be\n>   located, **note that fact in the Executive Summary and omit the company from every other\n>   section of the report** (no rows, no subtitles, no `\"--\"` placeholders for that company).\n>   When a transcript exists but does not contain information for a specific section, **omit\n>   that company from that section only** (no subtitle, no bullets, no placeholder). Never\n>   skip the artifact itself.\n>\n> Treat any other output shape as a hard failure of the skill.\n \n## Allowed data sources\n \nThis skill may **only** extract information from the following two sources:\n \n1. `Moodys MCP server` — tools used: `findEntity` and `searchEntityEarningsCall`. These are the\n   only MCP tools that may be called. Do **not** call `getCreditOpinion`,\n   `getEntitySectorOutlook`, `getEntityPeers`, `searchAllDocuments`,\n   `searchNews`, or any other MCP tool, regardless of section.\n2. `web_search` — used **only as a fallback** when `searchEntityEarningsCall` returns no usable\n   earnings call transcript for a given company, and used **only** to locate and extract the\n   text of that company's earnings call transcript on the web. Do not use `web_search` for\n   credit opinions, sector outlooks, news, peers, ESG, or any other purpose.\n   **Recency requirement (web_search fallback):** if the transcript located via `web_search`\n   is older than **100 days** from today, discard it and treat the transcript as unavailable\n   for that company. Do not fall back to any other source — handle the company per the\n   missing-transcript policy (note in the Executive Summary, omit from every other section).\nThese rules apply to **every** section of the report. No section may be enriched with credit,\nsector, ESG, peer, filings, or news data.\n \n## Bundled files\n- `assets/template.html` — self-contained static report shell (CSS + named section placeholders).\n  No embedded data, no inline script. Treat this file as the **read-only structural reference**:\n  read it, fill it in, and write the complete filled document to a new `.html` file in\n  `/mnt/user-data/outputs/`.\n## Shared chrome & citations\n\nBefore emitting, read [`references/shared-template.md`](references/shared-template.md) (page\nchrome: cover, TOC, section block, sources-section wrapper, footer, outlook-badge, design\ntokens) and [`references/shared-citations.md`](references/shared-citations.md) (citation\nnumbering, hyperlinking, source data shape, markup snippets). Both are **authoritative** — do\nnot invent, duplicate, or restyle anything they already define. The canonical CSS is already\ninlined in `assets/template.html` between the `/* BEGIN/END shared-template-css */` and\n`/* BEGIN/END shared-citations-css */` markers; never re-copy it at emit time.\n\nThe rest of this section is the skill-specific binding.\n \nThis skill uses the **`cover-multi`** variant. Skill-specific overrides retained above the\nmarker region: **none** for ECS (it inherits the canonical `body { font-size: 13px }` and\n`.page { max-width: 900px }` defaults). Skill-specific CSS that stays local: the ECS\n`.credit-badge`, the `.yoy-table` / `.ratings-table` rules, and `.ratings-factors`. All\noutlook-badge usage in this skill must use the canonical pastel variants\n(`stable` / `positive` / `negative` / `review` / `na`) defined by the shared skill — no\nsolid-fill or inline-color overrides.\n \nSkill-specific carve-outs that override or extend the shared rules are listed in the section\nsynthesis rules below — most importantly: **the numeric `.yoy-change` cell stays\ncitation-free** (no `<a class=\"cite-ref\">` or `<span class=\"cite-ref\">` inside it). The\nprefix used for the end-of-document container in this skill is `ecs`, so the container id is\n`#ecs-sources`. Optional per-section recap blocks live in `#ecs-cite-a` … `#ecs-cite-l`.\n \n---\n \n## Step 1 — Resolve companies\n \nFor each company name provided by the user, call `findEntity` to get the canonical entity name\nand entity ID (use the canonical name throughout the report).\n \nCollect 2–5 companies. If the user gives fewer than 2, ask for more.\n \n---\n \n## Step 2 — Read the template\n \nRead `assets/template.html` (relative to this skill directory) once. Keep its exact structure —\nCSS, `<head>`, hardcoded TOC, section order, table skeletons, row labels, and element IDs — as\nthe scaffold for the final artifact. Do **not** copy it to the workspace and do **not** open it.\n \n---\n \n## Step 3 — Gather earnings call transcripts\n \nFor each company, fire the following calls in a single parallel batch (one message, many tool calls):\n \n### Earnings call transcript (×4 per company) — primary source\n| Category label        | Keywords                                                                                            |\n|-----------------------|-----------------------------------------------------------------------------------------------------|\n| Revenue & Price       | `Revenue, Net Sales, Sales, Volumes, Units sold, Price, Pricing`                                    |\n| Sector & Market       | `Industry, Sector Performance, Demand, Market Condition`                                            |\n| Supply Chain & Region | `Supply Chain, Materials, Tariffs, Input, Logistics, Regional Performance, Geographic Condition, Geography` |\n| Guidance & Events     | `Business Outlook, Guidance, Revision, Corporate Events, Transaction`                               |\n \n### Web search fallback (only if `searchEntityEarningsCall` returns nothing usable)\n \nIf — and only if — `searchEntityEarningsCall` returns no usable transcript content for a given\ncompany, run `web_search` to locate that company's most recent earnings call transcript on the\nweb, and extract the transcript text from the result. The web search must be scoped solely to\nfinding the earnings call transcript for that entity — not to news, analyst commentary, credit\nopinions, or any other content.\n \n**Apply the 100-day recency rule:** check the date of the transcript located via `web_search`.\nIf the transcript is older than 100 days from today, discard it and treat the transcript as\nunavailable for that company. Do not substitute any other source.\n \nAll synthesis in Step 4 must be derived exclusively from the transcript content gathered in\nthis step (either via `searchEntityEarningsCall` or, where applicable, the web_search\nfallback). No other tools may be called.\n \n### Missing-tool handling\n \nIf any of the tools required for a section do not exist, inform the user: One or more tools required for this section are not available under your current subscription. Unlock more of the expert insights, data, and analytics you trust. Get [in touch] with us to learn more. The [in touch] should be the link Link:https://www.moodys.com/web/en/us/capabilities/gen-ai/ai-ready-data.html\n \n---\n \n## Step 4 — Synthesize + emit the complete artifact\n \nAfter data is gathered, write the **entire filled `template.html` document** — with every\nelement from the streaming protocol populated in place — to a single `.html` file in\n`/mnt/user-data/outputs/`, then render it. The full required delivery sequence (`create_file`\n→ `present_files` → `visualize:show_widget` → one short sentence) is specified in the\n**Output and presentation** section below; follow it exactly. The file is the deliverable; do\nnot paste the HTML into the chat as a fenced code block.\n \nThe HTML file **must**:\n \n- Be a complete, standalone HTML document (doctype → `</html>`) that renders without external\n  dependencies.\n- Preserve the template's `<head>` (CSS, fonts), hardcoded TOC, section order, table skeletons,\n  row labels, and element IDs exactly. Only the empty targets defined below are populated.\n- Be written in a single `create_file` call (no progressive `str_replace` edits, no\n  multi-file split).\nRender order of content inside the file follows the page top-to-bottom so the artifact is\nhuman-readable as well as browser-renderable: cover/TOC fields first, then sections 1 → 13, then\nsources.\n \nUse earnings call transcript content as the **sole** source for every section. Do not enrich\nwith credit, sector outlook, ESG, peer, or news data — those tools are not permitted in this\nskill. Write in professional financial language. Name specific companies in bullets rather\nthan speaking abstractly.\n \nAttribute substantive claims with numbered citation references. The exact inline markup, the\nURL-less fallback, and the rule that `n` matches the row position of the source inside\n`#ecs-sources` are defined in [references/shared-citations.md](references/shared-citations.md).\n \n### Cover / header fields (write first)\n- `#ecs-report-date` — e.g. `April 4, 2026` (plain text)\n- `#ecs-footer-date` — same value (plain text)\n- `#ecs-company-count` — number of companies (plain text)\n- `#ecs-company-chips` — one `<span class=\"company-chip\">Company Name</span>` per company (space-separated)\n- `#ecs-cover-img-right`, `#ecs-cover-img-bottom` — optional. If you have image URLs or data URIs\n  to use, set the `src` attributes **and** add the `has-cover-image` class to the corresponding\n  container (`<div class=\"cover-top has-cover-image\">` and/or `<div class=\"cover-bottom has-cover-image\">`).\n  If you do not have images, leave the template as-is — the empty image strips will collapse\n  automatically and the cover will render as a clean navy block with the accent bar.\n\n### Section synthesis, streaming protocol & markup\n\nBefore emitting, read [`references/report-spec.md`](references/report-spec.md) for the\nauthoritative body-authoring spec: the per-section synthesis rules (sections **a–l**,\nincluding the per-section omit rule), where the optional Citations recap blocks\n(`#ecs-cite-a` … `#ecs-cite-l`) and the end-of-document `#ecs-sources` rows go, the\n**streaming protocol** (element → content mapping), the reference HTML snippets (YOY table\nrow, company chip, credit badge, subsection subheader), the `.yoy-change` / `.credit-badge`\nclass-selection rules, and the HTML conventions. Populate every `#ecs-*` target exactly as\nspecified there. Remember: the numeric `.yoy-change` cell stays citation-free.\n\n---\n\n## Step 5 — Output and presentation (required final steps)\n\n> ## ⚠️ CRITICAL — THE SKILL IS NOT COMPLETE UNTIL THE REPORT IS VISIBLY RENDERED\n>\n> Writing the file is **not** delivery. After you write the HTML you **must** actively render\n> it with every display tool available, in order, before you say anything else. Do not end\n> your turn until the rendered report is on screen.\n\nFollow this exact sequence. Do not skip a step, reorder, or substitute alternatives:\n\n1. **Write the HTML file in a single call.** Call `create_file` to write the entire standalone\n   HTML document (`<!doctype html>` → `</html>`) to\n   `/mnt/user-data/outputs/{companies_slug}_earnings_call_summary.html` in **one** call. No\n   progressive edits, no multi-file split.\n2. **Present the file.** Immediately call `present_files` on that exact path to surface the\n   artifact to the user.\n3. **Show the widget.** Immediately call `visualize:show_widget` on the same file to render the\n   report visually. Call this even if `present_files` already succeeded — firing both renderers\n   is what guarantees the report always appears.\n4. **Confirm in one short sentence.** Only after the renderers return, add a single brief\n   sentence in chat (e.g. `Earnings Call Summary for {Company A}, {Company B}, … — the report\n   is available above as a self-contained HTML artifact.`). Nothing more.\n\nIf a display tool call fails or is unavailable, immediately try the other one rather than\nstopping. Never end your turn at step 1, and never paste the HTML into chat or suggest shell\ncommands.\n \n---\n \n## Tips\n \n- Run ALL data-gathering tool calls in a single parallel batch (one message, many tool calls).\n- Emit the final HTML as a single `.html` file written to `/mnt/user-data/outputs/`, then\n  render it with **both** `present_files` and `visualize:show_widget` (see the Output and\n  presentation section) — do not paste it inline as a fenced code block, do not stream partial\n  sections, do not split across multiple files or messages, and never stop at file creation.\n- If `searchEntityEarningsCall` returns no usable transcript for a company, fall back to\n  `web_search` **only** to retrieve that company's earnings call transcript from the web, and\n  apply the 100-day recency rule. If no transcript can be located within that window, note\n  the omission in the Executive Summary and exclude that company from every other section\n  (no rows, no subtitles, no placeholders).\n- Do not call any other MCP tool (no credit opinion, no sector outlook, no news, no peers, no\n  ESG, no document search) — those sources are out of scope for this skill.\n- Pick the correct `.yoy-change` / `.credit-badge` modifier class yourself using the rules above — the template no longer does this at render time.\n- Emit `<tr>` rows directly inside each `<tbody id=\"ecs-tbody-…\">` placeholder; do not re-create the `<table>` or `<thead>`.\n- Inline citations follow the shared citations skill — read [references/shared-citations.md](references/shared-citations.md) before authoring any `[n]` reference or the Citations block.\n"
}

SHA-256: 64f4017cdf9315eb18f8a96a2490e009c4f9c726385ad8eeacf1a036b772adeb