diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index ea64cfec7..0c294404f 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -118,6 +118,12 @@ "source": "./plugins/partner-built/spglobal", "description": "S&P Global - Financial data and analytics skills including company tearsheets, earnings previews, and transaction summaries" }, + { + "name": "moodys", + "displayName": "Moody's", + "source": "./plugins/partner-built/moodys", + "description": "Moody's — Credit data and analytics skills including issuer briefs, sector briefs, peer analysis, rating pitch decks, and earnings-call summaries." + }, { "name": "claude-for-msft-365-install", "displayName": "Claude for Microsoft 365 Install", diff --git a/plugins/partner-built/moodys/.claude-plugin/plugin.json b/plugins/partner-built/moodys/.claude-plugin/plugin.json new file mode 100644 index 000000000..b301da547 --- /dev/null +++ b/plugins/partner-built/moodys/.claude-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "name": "moodys", + "description": "Moody's — Credit data and analytics skills including issuer briefs, sector briefs, peer analysis, rating pitch decks, and earnings-call summaries.", + "version": "0.1.0", + "author": { + "name": "Moody's", + "email": "clientservices@moodys.com" + }, + "homepage": "https://www.moodys.com", + "license": "SEE LICENSE IN LICENSE", + "keywords": [ + "moodys", + "credit", + "ratings", + "fixed-income", + "issuer-briefs", + "peer-analysis", + "sector-analysis", + "earnings" + ] +} diff --git a/plugins/partner-built/moodys/.mcp.json b/plugins/partner-built/moodys/.mcp.json new file mode 100644 index 000000000..e2c73f3cc --- /dev/null +++ b/plugins/partner-built/moodys/.mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "moodys-credit-mcp": { + "type": "http", + "url": "https://api.moodys.com/genai-ready-data/Credit/mcp" + } + } +} diff --git a/plugins/partner-built/moodys/LICENSE b/plugins/partner-built/moodys/LICENSE new file mode 100644 index 000000000..deb652346 --- /dev/null +++ b/plugins/partner-built/moodys/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2026-present Kensho Technologies, LLC. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/plugins/partner-built/moodys/README.md b/plugins/partner-built/moodys/README.md new file mode 100644 index 000000000..7eb072fb2 --- /dev/null +++ b/plugins/partner-built/moodys/README.md @@ -0,0 +1,67 @@ +# Moody's Skills + +A collection of AI agent skills that leverage [Moody's MCP tools](https://www.moodys.com) to produce professional financial analysis and reports. Each skill is a self-contained prompt-driven workflow that an AI coding agent (Cursor, Claude Code, etc.) can follow end-to-end. + +This plugin includes a [Claude Code](https://docs.claude.com/en/docs/claude-code) manifest (`.claude-plugin/plugin.json`). The skills, MCP config, and assets are driven by `SKILL.md` frontmatter and `.mcp.json`. + +## Quick start + +### Claude Code + +1. Install the plugin by pointing Claude Code at this directory (or install from a marketplace if available). +2. Ensure MCP access — the plugin ships with `.mcp.json` for the required Moody's servers. Provide valid API credentials. +3. Trigger a skill — ask Claude naturally. Each `SKILL.md` defines trigger phrases in its frontmatter. + +## Plugin structure + +``` +plugin/ +├── .claude-plugin/ +│ └── plugin.json # Claude Code manifest +├── .mcp.json # MCP server configuration +├── README.md # This file +└── skills/ + └── / + ├── SKILL.md # Skill definition (trigger, steps, schema) + └── assets/ # Templates, images, or other bundled files +``` + +## Available skills + +| Skill | Description | MCP Server | +|-------|-------------|------------| +| [Earnings Brief](skills/earnings-brief/SKILL.md) | Generates a Moody's-styled HTML report comparing earnings call transcripts across 2–5 companies, enriched with credit ratings, sector outlook, and news. | `Moodys MCP server` | +| [Peer Analysis](skills/peer-analysis/SKILL.md) | Produces an HTML peer analysis report comparing a target company against up to 3 credit peers, with structured sub-tables and a ratings overview. | `Moodys MCP server` | +| [Issuer Brief](skills/issuer-brief/SKILL.md) | Generates a comprehensive Public Information Book (PIB) HTML report covering company overview, financials, peer comparison, industry, strategy, management, credit profile, risks, and ESG. | `Moodys MCP server` | +| [Rating Analysis](skills/rating-analysis/SKILL.md) | Builds a PowerPoint (.pptx) rating pitch deck combining sector analysis, company credit overview, SWOT, peer comparison, and ESG. | `Moodys MCP server` | +| [Sector Brief](skills/sector-brief/SKILL.md) | Produces a research-driven HTML sector brief report combining Moody's sector outlook with broader industry research. | `Moodys MCP server` | + +## How skills work + +Each skill is defined by a `SKILL.md` file with two parts: + +- **YAML frontmatter** — `name`, `description`, and trigger phrases that tell the agent when to activate the skill. +- **Markdown body** — step-by-step instructions the agent follows: which MCP tools to call, how to synthesize the data, and what artifact to produce. + +Skills can bundle supporting assets (HTML templates, schemas, images) in an `assets/` directory alongside the `SKILL.md`. + +## Adding a new skill + +1. Create a new directory under `skills/` with a short, kebab-case name (e.g. `skills/credit-monitor/`). +2. Add a `SKILL.md` with YAML frontmatter (`name`, `description`) and detailed step-by-step instructions. +3. Place any templates or static files in an `assets/` subdirectory. +4. Update the **Available skills** table in this README. + +## MCP servers + +The plugin's `.mcp.json` declares the MCP servers that skills depend on. Currently configured: + +| Server | Type | Endpoint | +|--------|------|----------| +| `moodys-credit-mcp` | HTTP | `https://api.moodys.com/genai-ready-data/Credit/mcp` | + +Individual skills list their required server and the specific tools they call in their `SKILL.md`. + +## License + +Apache License 2.0 — see [LICENSE](LICENSE) for full terms. diff --git a/plugins/partner-built/moodys/skills/earnings-brief/SKILL.md b/plugins/partner-built/moodys/skills/earnings-brief/SKILL.md new file mode 100644 index 000000000..ced2142c1 --- /dev/null +++ b/plugins/partner-built/moodys/skills/earnings-brief/SKILL.md @@ -0,0 +1,394 @@ +--- +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". +--- + +# Earnings Brief Skill + +Generates a professional HTML report (styled like a Moody's earnings call summary PDF) for 2–5 +companies by pulling data from multiple `Moodys MCP server` MCP tools and consolidating 13 +structured sections plus a hardcoded table of contents into a single HTML artifact. + +The workflow is **single-artifact delivery**: gather all data, then write the entire filled +HTML document to a single `.html` file in `/mnt/user-data/outputs/` and present it to the user +via `present_files`. The rendered HTML artifact is the deliverable. + +> ## ⚠️ CRITICAL — NON-NEGOTIABLE OUTPUT CONTRACT +> +> **The LLM MUST deliver the final report as a single standalone HTML artifact file.** This is +> the only acceptable form of delivery for this skill. Specifically: +> +> - The LLM **MUST** write the **complete, standalone HTML document** (`` → +> ``), with every section from the streaming protocol populated inline, to a single +> `.html` file in `/mnt/user-data/outputs/` using the `create_file` tool, then surface it +> to the user with `present_files`. +> - The LLM **MUST NOT** emit the report inline as a fenced ` ```html ` code block, as prose, +> Markdown, JSON, attachments, or links. The rendered HTML artifact itself is the answer. +> - The LLM **MUST NOT** split the report across multiple files, multiple messages, partial +> snippets, or summaries. +> - If data gathering fails partially, still produce the single HTML artifact file with the +> best-available content. When the earnings call transcript for a company cannot be +> located, **note that fact in the Executive Summary and omit the company from every other +> section of the report** (no rows, no subtitles, no `"--"` placeholders for that company). +> When a transcript exists but does not contain information for a specific section, **omit +> that company from that section only** (no subtitle, no bullets, no placeholder). Never +> skip the artifact itself. +> +> Treat any other output shape as a hard failure of the skill. + +## Allowed data sources + +This skill may **only** extract information from the following two sources: + +1. `Moodys MCP server` — tools used: `findEntity` and `searchEntityEarningsCall`. These are the + only MCP tools that may be called. Do **not** call `getEntityCreditOpinion`, + `getEntitySectorOutlook`, `getEntityEsg`, `getEntityPeers`, `searchEntityDocuments`, + `searchNews`, or any other MCP tool, regardless of section. +2. `web_search` — used **only as a fallback** when `searchEntityEarningsCall` returns no usable + earnings call transcript for a given company, and used **only** to locate and extract the + text of that company's earnings call transcript on the web. Do not use `web_search` for + credit opinions, sector outlooks, news, peers, ESG, or any other purpose. + **Recency requirement (web_search fallback):** if the transcript located via `web_search` + is older than **100 days** from today, discard it and treat the transcript as unavailable + for that company. Do not fall back to any other source — handle the company per the + missing-transcript policy (note in the Executive Summary, omit from every other section). +These rules apply to **every** section of the report. No section may be enriched with credit, +sector, ESG, peer, filings, or news data. + +## Bundled files +- `assets/template.html` — self-contained static report shell (CSS + named section placeholders). + No embedded data, no inline script. Treat this file as the **read-only structural reference**: + read it, fill it in, and write the complete filled document to a new `.html` file in + `/mnt/user-data/outputs/`. +## Template (shared) + +Before emitting the HTML report, **read both**: +1. [`skills/shared/template/SKILL.md`](../shared/template/SKILL.md) — authoring rules (which + classes / snippets are owned by the shared layer, allowed per-skill overrides, outlook-badge + usage). +2. [`skills/shared/template/assets/template.html`](../shared/template/assets/template.html) — + canonical CSS (inside ` + + +
+
+
+
+
+ +
Earnings Call
Transcripts Summary
+
Companies covered
+
+
+
+ Date: + Companies: + Type: Earnings Call Summary +
+
+
+
+
+
+
+
+
+
+ +
+
+
Section 1. Executive Summary
+
+
+
+
+
Section 2. Overall Credit Consideration
+
+
+
+
+
+
+
+
Section 3. Revenue YOY Trend
+ + + +
Company NameYOY ChangeCommentary
+
+
+
+
Section 4. Volumes YOY Trend
+ + + +
Company NameYOY ChangeCommentary
+
+
+
+
Section 5. Selling Price Trend
+ + + +
Company NameYOY ChangeCommentary
+
+
+
+
Section 6. Qualitative / Broad Industry Commentary on Revenue, Volumes & Pricing
+
+
+
+
+
Section 7. End Market Conditions
+
+
+
+
+
Section 8. Supply Chain Conditions
+
+
+
+
+
Section 9. Business Conditions by Geography
+
+
+
+
+
Section 10. Next Quarter & Full Year Business Outlook / Guidance
+
+
+
+
+
Section 11. Earnings Revisions for Applicable Companies
+
+
+
+
+
Section 12. Corporate Events (M&A, Restructurings, Plant Closures, Force Majeures, etc.)
+
+
+
+
+
Citations
+
+
+
+ +
+ + diff --git a/plugins/partner-built/moodys/skills/issuer-brief/SKILL.md b/plugins/partner-built/moodys/skills/issuer-brief/SKILL.md new file mode 100644 index 000000000..b05e35f5a --- /dev/null +++ b/plugins/partner-built/moodys/skills/issuer-brief/SKILL.md @@ -0,0 +1,673 @@ +--- +name: issuer-brief +description: > + Produce a comprehensive Issuer Brief HTML report for a company using Moody's + GenAI MCP tools. Use this skill whenever the user asks to create an Issuer Brief, + company profile report, credit memo, investment book, or comprehensive company analysis. Also + trigger when they ask for a report combining company overview, financials, peer comparison, + industry overview, strategic developments, management, credit profile, risks, and ESG into a + single document. Trigger even if they just name a company and say "Issuer Brief", "info book", "company + book", "credit book", or "full company report". +--- + +# Issuer Brief Skill + +Generates a professional HTML report (styled like a Moody's Issuer Brief) for a +target company. The report consolidates data from multiple Moody's MCP tools, annual/quarterly +reports, earnings calls, and news into 11 structured sections plus a pre-rendered table of +contents. Section 4 is titled "Company Metrics" (formerly "Share Price Performance and Valuation"). + +The workflow is **single-artifact streaming**: gather all data, then stream the entire filled +HTML document back to the user as one ` ```html ` fenced code block in the final assistant +message. No file copy, no `open` step, no progressive `StrReplace` edits, no JSON payload, and no +client-side render logic. The fenced code block is the deliverable. + +> ## ⚠️ CRITICAL — NON-NEGOTIABLE OUTPUT CONTRACT +> +> **The LLM MUST stream the final report back as a single HTML artifact inside the assistant +> response.** This is the only acceptable form of delivery for this skill. Specifically: +> +> - The final assistant message **MUST** contain exactly one ` ```html ` fenced code block +> holding the **complete, standalone HTML document** (`` → ``), with +> every section from the streaming protocol populated inline. +> - The LLM **MUST NOT** write the report to a file on disk (no `Write`, no `cp` of the +> template, no `StrReplace` into a working artifact, no `open` command). +> - The LLM **MUST NOT** split the report across multiple code blocks, multiple messages, +> partial snippets, or summaries. +> - The LLM **MUST NOT** substitute prose, Markdown, JSON, attachments, or links for the +> fenced HTML artifact. The artifact itself is the answer. +> - If data gathering fails partially, still emit the single ` ```html ` artifact with +> the best-available content and `"--"` placeholders for missing cells — never skip the +> artifact. +> +> Treat any other output shape as a hard failure of the skill. + +> ## ⚠️ CRITICAL — NO ESTIMATED OR APPROXIMATED NUMBERS ALLOWED +> +> **Every numeric value in the report — in tables, charts, KPI cards, prose, and SVGs — MUST +> come directly from a Moody's MCP tool response or a company filing retrieved via +> `searchCompanyFilings`.** Estimation, approximation, interpolation, and inference from +> indirect sources are strictly forbidden. Specifically: +> +> - **NEVER** write `~`, `approx.`, `estimated`, or any similar qualifier next to a number. +> If the exact figure is unavailable from the data gathered, use `"--"` instead. +> - **NEVER** derive a number by splitting, distributing, or back-calculating from an aggregate +> (e.g. do not allocate total debt across maturity buckets by assumption). +> - **NEVER** invent segment revenue, EPS, FCF, ROE, debt maturity amounts, or any other +> metric that was not explicitly returned by a tool call. +> - **Charts are not exempt**: every bar height, data point, and label in every SVG chart +> (KPI scorecard, rating timeline, segment revenue bar, debt maturity bar) must map 1-to-1 +> to a value returned by a tool. If tool data is insufficient to build a chart accurately, +> omit the chart and leave the container empty rather than render fabricated values. +> - **Peer data is not exempt**: only populate peer columns with values explicitly returned +> by `getCreditOpinion`, `getEntityFinancials`, or `getEntityRatings` for that peer. +> +> Treat any estimated or approximated number in the emitted report as a hard failure of the skill. + +## Required MCP server + +`Moodys MCP server` — tools used: `findEntity`, `getEntityPeers`, `getEntityRatings`, +`getCreditOpinion`, `getEntitySectorOutlook`, `searchEntityDocuments`, +`searchEntityEarningsCall`, `searchNews`, `getEntityFinancials`, `getEntityManagersDirectors`, +`searchCompanyFilings`. + +If 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 Link:https://www.moodys.com/web/en/us/capabilities/gen-ai/ai-ready-data.html with us to learn more. + +> ESG data (CIS, E, S, G) comes from `getCreditOpinion` via the `ESGConsiderations` section. + +## Bundled files + +- `assets/template.html` — self-contained static report shell: CSS, layout, a hardcoded 11-entry + table of contents, pre-shaped tables (financial / 5 valuation / key-indicators / ESG-score) + with cell-level IDs, and empty targets (containers, ``, `