Cloud FinOps Skill & MCP
Server Details
Cloud cost + FinOps knowledge for AI agents: AWS/Azure/GCP optimisation, AI spend, waste playbooks.
- Status
- Healthy
- Uptime
- 64.4% over 82 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- OptimNow/cloud-finops-skills
- GitHub Stars
- 66
- Server Listing
- cloud-finops-mcp
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
The set divides cleanly into two content types (playbooks, references), each with an explicit list/find/get trio whose boundaries are spelled out in the descriptions ('when the question already names a provider, find_playbooks returns only the matching runbooks'). get_live_figures is a distinct fourth purpose (fetching dated figures from OptimToken guides) and does not collide with the reference fetchers. Descriptions actively cross-reference each other, so misselection risk is minimal.
Every tool follows the same snake_case verb_noun pattern: list_playbooks, find_playbooks, get_playbook, list_references, find_references, get_reference, get_live_figures. The verbs are used consistently with their semantics across both resource families, so the naming itself teaches the list/find/get hierarchy.
Seven tools is tightly scoped: three operations times two content families, plus one figures fetcher. Nothing is redundant and no tool feels like filler; the list/find split is justified by the size of the reference library (up to 15k tokens per file).
Discovery, filtered discovery, and retrieval are covered for both playbooks and references, with graceful miss handling (suggestions, available_sections, valid_values). The only soft spot is get_live_figures: there is no tool to enumerate which guides have live figures, so an agent must guess a slug and rely on the error's available_guides list.
Available Tools
7 toolsfind_playbooksFind a waste runbookARead-onlyIdempotentInspect
Finds runbooks for a suspected cloud-waste pattern, filterable by provider, service, waste category or detection confidence. Useful when the user asks how to detect or fix a specific waste pattern; each runbook includes a detection query the user can run in their own account. This connector has no access to the user's accounts.
Use this for questions like "which VMs are running for nothing",
"why is our NAT bill so high", "my NAT gateway processes 10TB to S3",
"should I delete these old snapshots", "which of our RIs are about to
expire", "what waste can we clean up safely without review" - anything
that names a provider, a waste category, or how confident the
detection needs to be before acting. Patterns
covered include NAT gateways and VPC endpoints, expiring Savings
Plans / RIs / reservations, snapshot sprawl, S3 lifecycle gaps, idle
or stopped VMs, orphaned disks / public IPs / EBS volumes, GPU and
SageMaker sizing, Kubernetes idle capacity, and schedule blindness.
All filters are optional and combine with AND semantics. String matching
is case-insensitive and exact. Examples:
- ``find_playbooks(scope="aws")`` - all AWS-specific playbooks
- ``find_playbooks(waste_category="idle")`` - every idle-resource pattern
- ``find_playbooks(scope="cross-cloud", confidence="obvious")``
Args:
scope: ``"aws"``, ``"azure"``, ``"gcp"``, or ``"cross-cloud"``.
service: Provider service exact-match (e.g. ``"AWS NAT Gateway"``).
waste_category: ``"orphaned"``, ``"idle"``, ``"overprovisioned"``,
``"commitment-mismatch"``, ``"schedule-blindness"``,
``"modernization"``, ``"ai-ml-inefficiency"``, or ``"egress"``.
confidence: ``"obvious"`` (single signal is enough),
``"likely"`` (two signals required), or ``"possible"``
(needs human review). From the OptimNow three-tier confidence
model in `finops-waste-detection-playbooks`.
Returns ``{"filters": {...}, "playbooks": [...], "total": N}``. A query
that matches nothing also returns `hint` and `valid_values`, so a typo is
distinguishable from a genuine gap in coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| service | No | ||
| confidence | No | ||
| waste_category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/closed-world, so the safety profile is covered; the description goes further with a genuinely load-bearing constraint — "This connector has no access to the user's accounts" — which prevents the agent from promising live inspection. It also discloses the AND-combination of filters, case-insensitive exact string matching, the return envelope, and that a zero-match result carries hint and valid_values so a typo is distinguishable from a coverage gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and well organized: purpose, then usage triggers, then filter semantics, then return shape. It is longer than needed — the example-questions list and the "patterns covered" inventory partially overlap, since the categories and services are already enumerated under Args, and the closing Returns paragraph repeats information that the output schema already encodes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-optional-filter search tool with a 0%-covered schema, everything an agent needs is present: valid values for every parameter, AND semantics, matching rules, the response envelope, and the empty-result contract. The output schema exists, so the brief return-value note is sufficient rather than redundant padding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema is bare nullable strings with no enums, so the description carries the entire burden — and does: scope enumerates aws/azure/gcp/cross-cloud, waste_category lists all eight canonical values, service is flagged as exact-match with a quoted example, and confidence explains the semantics of each tier (one signal vs two vs human review). Without this text the parameters would be unusable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Finds runbooks") plus the filterable dimensions (provider, service, waste category, detection confidence), which is exactly what separates it from list_playbooks (unfiltered enumeration) and get_playbook (single fetch). The added note that each runbook contains a detection query the user runs in their own account pins down what the returned resource actually is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives rich when-to-use guidance, including five concrete user utterances ("why is our NAT bill so high", "which of our RIs are about to expire") and the general rule "anything that names a provider, a waste category, or how confident the detection needs to be." It never names a sibling as the alternative for the adjacent case (e.g. use list_playbooks to browse everything, get_playbook to fetch one by id), so the routing is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_referencesFind the right FinOps guideARead-onlyIdempotentInspect
Find which guidance serves a FinOps question - how to commit, size, allocate, charge back, forecast, or govern cloud and AI spend.
Use this for questions like "how should we size Savings Plans",
"what should Finance own in chargeback", "what does a Crawl-stage org
tackle first" - anything that maps to FinOps Framework facets (domain,
capability, phase, persona, maturity) - and you want only the
references that serve it, instead of scanning the full list.
All filters are optional and combine with AND semantics. String matching
is case-insensitive and exact (not substring). Examples:
- ``find_references(domain="Optimize Usage & Cost")``
- ``find_references(phase="Optimize", persona="Engineering")``
- ``find_references(persona="Engineering", persona_primary_only=True)``
- ``find_references(capability="Rate Optimization")``
- ``find_references(maturity="Crawl")``
Args:
domain: FinOps Framework domain (e.g. ``"Optimize Usage & Cost"``,
``"Quantify Business Value"``, ``"Manage the FinOps Practice"``).
capability: FinOps capability (matches ``fcp_capability`` and
``fcp_capabilities_secondary``).
phase: FinOps phase (``"Inform"``, ``"Optimize"``, ``"Operate"``).
persona: Persona (matches ``fcp_personas_primary`` and
``fcp_personas_collaborating``).
maturity: Entry maturity level (``"Crawl"``, ``"Walk"``, ``"Run"``).
persona_primary_only: when True, ``persona`` matches only the primary
list. Useful when the default match barely narrows the set -
broad personas like Engineering collaborate on nearly every file,
so filtering on collaboration is descriptive, not discriminating.
``persona="Engineering", persona_primary_only=True`` is the
engineering reading list; the default is the everything-they-touch
view.
Returns ``{"filters": {...}, "references": [...], "total": N}``. A query
that matches nothing also returns `hint` and `valid_values`, so a typo is
distinguishable from a genuine gap in coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| phase | No | ||
| domain | No | ||
| persona | No | ||
| maturity | No | ||
| capability | No | ||
| persona_primary_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered; the description adds genuinely non-obvious behavior: optional filters combine with AND, string matching is case-insensitive and exact rather than substring, and a zero-match query returns `hint` and `valid_values` so a typo is distinguishable from a coverage gap. It also explains why `persona_primary_only` exists (broad personas like Engineering collaborate on nearly every file). Minor deduction because the stated return shape largely restates the existing output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage triggers, then matching semantics, then per-parameter detail, then return shape — a logical order for an agent reading top-down. The five worked call examples are efficient illustrations, though the Args section slightly duplicates the schema property names and the return-shape sentence could be trimmed given the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, all-optional filter tool with an output schema, everything an agent needs is present: which facet values are legal, how filters combine, how strings are matched, how to disambiguate the one non-obvious boolean, and what an empty result looks like. No open questions remain before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and does: each of the six parameters is defined with accepted vocabulary (phase = Inform/Optimize/Operate, maturity = Crawl/Walk/Run, sample domain strings) and match targets (capability hits both fcp_capability and fcp_capabilities_secondary; persona hits primary and collaborating). The `persona_primary_only` semantics are spelled out precisely, including the default-vs-strict contrast.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Find which guidance serves a FinOps question") and enumerates the question space it covers (commit, size, allocate, charge back, forecast, govern). The closing contrast — "only the references that serve it, instead of scanning the full list" — separates it from list_references and get_reference without the agent needing to open those schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger utterances ("how should we size Savings Plans", "what does a Crawl-stage org tackle first") plus the general rule that the question maps to a FinOps Framework facet. It explicitly routes away from the sibling bulk-listing behavior by stating this returns only matching references rather than the full list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_figuresCurrent figures from an OptimToken guideARead-onlyIdempotentInspect
Get the current value of a figure a reference quotes with a date.
Use this when a reference quotes a figure from an OptimToken guide
("measured on the 2026-10-25 OptimToken catalogue") and the answer needs
the current value: the Compute Savings Plan or reservation discount, the
gap between a flexible and a locked commitment, the ARM discount against
Intel and AMD, the share of LLM models with a batch rate. It fetches the
guide's figures file, rebuilt daily, and returns it as published.
Args:
guide: The guide slug, lowercase letters, digits and hyphens. Guides
with figures today: ``"savings-plans-vs-reserved-instances"``,
``"arm-against-x86"``, ``"batch-api-economics"``.
Returns ``{"document": {...}, "fetched_at": ..., "source": "live" |
"cached", "note": ...}``, plus ``cache_age_seconds`` when cached (six-hour
cache). ``document`` is the file unchanged: ``guide``, ``title``,
``url``, ``dataSource``, ``snapshotDate`` (the catalogue the figures come
from), ``dateModified`` and ``figures``, where discounts are fractions
(0.2743 is 27.4%) and each key names a median, a range or a count.
An unknown slug returns ``{"error", "available_guides", "suggestions"}``.
Any other failure (timeout, HTTP error, invalid JSON) returns
``{"error", "fallback"}``: the dated figure in the reference then stands,
quoted with its date.
| Name | Required | Description | Default |
|---|---|---|---|
| guide | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say read-only, idempotent and open-world; the description adds the daily rebuild cadence, the six-hour cache and the resulting 'source'/'cache_age_seconds' fields, plus both failure shapes (unknown slug with suggestions, other errors with fallback). That is real behavior an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and use case, then Args/Returns/errors in a clean order. Slightly long — the parenthetical catalogue example is repeated and the figure-category list could be tighter — but every section adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the one parameter, the return document's fields and units (discounts as fractions, keys naming medians/ranges/counts), snapshot dating, cache semantics, and both error branches. Nothing needed to call it or interpret the result is missing, even though an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema only declares a bare string, so the description carries the full burden: it specifies the slug format (lowercase letters, digits, hyphens), lists the currently valid slugs, and documents the error payload returned for an unknown slug.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the current value of a figure a reference quotes with a date') and makes the live-vs-dated distinction explicit, which separates it from the sibling reference and playbook lookup tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger condition (a reference quotes a figure like 'measured on the 2026-10-25 OptimToken catalogue' and the answer needs the current value), enumerates the kinds of figures covered, and states what to do when the call fails (keep the dated figure with its date).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playbookRead one waste runbookARead-onlyIdempotentInspect
Fetch the step-by-step runbook for one specific waste pattern: symptoms, the detection queries to run, the fix, and the anti-pattern to avoid.
Use this when the user asks how to detect, confirm, or fix one specific
named waste pattern (zombie NAT gateway, snapshot sprawl, idle SageMaker
endpoint, ...), including questions about the user's own resources
("which of my X..."). Each runbook includes a detection query the user
can run in their own cloud account; this connector has no access to the
user's accounts.
Args:
name: Playbook slug as returned by ``list_playbooks`` (e.g.
``"aws-zombie-nat-gateway"``, ``"azure-orphan-disks"``,
``"cross-cloud-untagged-spend-drift"``).
Returns ``{"name": ..., "title": ..., "content": "...", "lines": N}``.
On miss, returns ``{"error": ..., "suggestions": [...]}`` with up to
three string-distance matches so the caller can self-correct.
A host with MCP Apps (SEP-1865) support may render this result via the
linked ``ui://cloud-finops/playbook-viewer`` resource instead of showing
the raw markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, non-destructive, closed-world read, so the safety profile is covered; the description adds genuinely new behavior. It discloses that the connector has no access to the user's cloud accounts and that runbooks merely supply a detection query the user runs themselves, which is a critical expectation-setting detail. It also documents the success payload shape, the miss behavior with up to three string-distance suggestions for self-correction, and the optional MCP Apps rendering path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose and usage before the Args/Returns blocks, so an agent can decide quickly. The Args and Returns sections duplicate some information already conveyed by the schema and output schema, and the MCP Apps rendering note is marginally useful, but nothing is genuinely wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool, the description covers purpose, selection criteria, parameter format and provenance, success payload, failure payload with recovery hints, and the no-account-access constraint. Despite an output schema existing, the explicit miss-with-suggestions behavior is worth stating and closes the only real ambiguity an agent would face.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for the single required parameter, and it does: it defines the argument as a playbook slug sourced from list_playbooks and supplies three concrete example values across AWS, Azure, and cross-cloud patterns. That is more meaning than the bare string type in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ("Fetch") and a precisely scoped resource ("the step-by-step runbook for one specific waste pattern") and enumerates the contents: symptoms, detection queries, the fix, and the anti-pattern. It is clearly distinguishable from siblings like list_playbooks and find_playbooks, which operate on collections rather than a single named runbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to reach for this tool: the user asks how to detect, confirm, or fix one specific named waste pattern, with concrete examples (zombie NAT gateway, snapshot sprawl, idle SageMaker endpoint). It also covers the ambiguous case of "which of my X..." questions and implicitly routes slug discovery to list_playbooks, leaving little to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_referenceRead one FinOps guideARead-onlyIdempotentInspect
Fetch the guidance on one FinOps topic - the billing mechanics, decision rules and worked examples behind a defensible answer - either whole or one section at a time.
Use this when you need the actual content of one known reference,
after ``list_references`` or ``find_references`` told you which one
serves the question. Advisory questions (commitment sizing, chargeback
design, allocation methodology) are served by the reference's decision
rules and worked examples, which a summary does not carry.
``section`` is useful when the question is narrower than the file. The
``approx_tokens`` hint in the listing shows when this matters: the
largest references run to about 15,000 tokens and the Azure pattern
catalogue is an enumerated list, so a question about storage lifecycle is
served by one section of ``finops-azure-patterns``. Without ``section``
the whole file comes back, with its cross-cutting reasoning.
Args:
name: Reference name as returned by ``list_references`` (e.g.
``"finops-aws"``, ``"finops-genai-capacity"``,
``"optimnow-methodology"``).
section: Optional H2 or H3 heading to return on its own. Matched
case-insensitively and partially against the headings, so a
natural phrase works - ``"storage"``, ``"commitment decision
tree"``. A heading's trailing count is ignored, so
``"storage optimization patterns"`` matches
``"Storage Optimization Patterns (28)"``. If it matches nothing
you get the list of available headings back, not the whole file.
Without ``section``, returns ``{"name": ..., "content": "...",
"lines": N}`` where ``content`` is the file verbatim. With ``section``,
returns ``{"name", "title", "section", "section_level", "partial": true,
"content", "lines", "full_lines"}`` where ``content`` is that section
prefixed by the reference's title, plus ``other_matching_sections`` when
the phrase matched more than one heading.
On a miss, returns ``{"error": ..., "suggestions": [...]}``. An unknown
name gives up to three string-distance matches; an unmatched ``section``
gives ``available_sections`` - every heading in the file - so the retry
is exact.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description reasonably spends its budget elsewhere: it discloses exact return shapes for both modes, the title-prefixing of section content, the "other_matching_sections" case, and the distinct error shapes on a miss. The failure behavior (suggestions vs. available_sections, never silently returning the whole file) is the kind of context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then parameters, then return shapes — a logical escalation with no filler sentences. It runs long and the "Args:" block partially restates schema property names, which keeps it just short of maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the existence of an output schema, the description explains branch-dependent return shapes and error recovery, which the agent needs to plan a retry strategy. For a two-parameter read tool with sibling routing, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: `name` is tied to list_references output with example values, and `section` is fully specified as case-insensitive, partially matched, trailing-count-insensitive, with worked examples ("storage" matching "Storage Optimization Patterns (28)"). This is meaning well beyond the bare string type in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Fetch the guidance on one FinOps topic") plus the scope of what is returned ("billing mechanics, decision rules and worked examples"), and separates itself from list_references/find_references by naming them as the discovery step. An agent can distinguish this from every sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ("after list_references or find_references told you which one serves the question") and an explicit condition for the section variant ("when the question is narrower than the file"), including a concrete example of storage lifecycle in finops-azure-patterns. It also carves out advisory question types where this tool beats a summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_playbooksBrowse the cloud waste runbooksARead-onlyIdempotentInspect
See every ready-made runbook for finding and fixing cloud waste: idle, orphaned and overprovisioned resources, egress surprises, schedule blindness and AI/ML inefficiency across AWS, Azure and GCP.
Use this to discover which waste patterns have a runbook. When the
question already names a provider, waste category, or confidence tier,
``find_playbooks`` returns only the matching runbooks.
Each playbook is a small (~90-170 line) runbook scoped to one waste
pattern (e.g. ``aws-zombie-nat-gateway``, ``azure-orphan-disks``). Returns
``{"playbooks": [...], "total": N}`` where each entry includes ``name``,
``title``, ``scope`` (aws/azure/gcp/cross-cloud), ``service``,
``waste_category``, ``confidence`` (obvious/likely/possible), and
``approx_tokens`` - the same size hint the reference listing carries, so a
multi-playbook answer can be budgeted before fetching.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuine context beyond that: entry size (~90-170 lines), the exact response envelope `{"playbooks": [...], "total": N}`, and the purpose of `approx_tokens` as a pre-fetch budgeting hint. It doesn't mention catalogue scale or pagination, but since all results appear to be returned in one listing, little is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then the alternative, then the return shape — a logical order for an agent. The waste-pattern enumeration in the first sentence is somewhat long but earns its place by letting the agent judge coverage; minor redundancy between 'scope (aws/azure/gcp/cross-cloud)' and the provider list above.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only catalogue tool with annotations and an output schema, this is complete: it covers what it returns, the field semantics, the sibling split, and the token-budgeting use of approx_tokens. An agent can call it and interpret results without further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters the baseline is 4; the description correctly signals the tool is unfiltered and redirects filtering intent to find_playbooks rather than implying hidden parameters. It also documents the meaning of each returned field, which goes beyond the input schema's obligations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('See every ready-made runbook for finding and fixing cloud waste') and enumerates the waste patterns and providers covered, which distinguishes it from the sibling catalog tools (list_references, find_references) and from the retrieval tools (get_playbook).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states explicitly when to use this (broad discovery of what runbooks exist) and names `find_playbooks` as the alternative with the exact trigger condition: 'When the question already names a provider, waste category, or confidence tier'. That is a full use/don't-use rule with the sibling named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_referencesBrowse the FinOps knowledge libraryARead-onlyIdempotentInspect
See what FinOps guidance is available: billing mechanics, commitment strategy, allocation and chargeback, AI cost management, and per-provider cost handbooks (AWS, Azure, GCP, OCI, Databricks, Snowflake, ...).
Use this to discover what the library covers. When the question already
names a FinOps domain, phase, persona or maturity, ``find_references``
returns only the matching references.
Returns a dict shaped ``{"references": [...], "total": N}`` where each
entry includes ``name``, ``title``, a one-line ``description``, the
discriminating FCP facets (``fcp_domain``, ``fcp_capability``,
``fcp_phases``, ``fcp_personas_primary``, ``fcp_maturity_entry``) and
``approx_tokens``.
``approx_tokens`` gives each file's size before it is fetched: the library
runs from about 2,000 to about 15,000 tokens per file, and
``get_reference(name, section=...)`` returns one section of a large one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed-world scope, so the safety profile is covered. The description adds genuinely new behavioral context: approximate per-file size (2,000-15,000 tokens) and the fact that get_reference(name, section=...) fetches just one section of a large file, which is real cost-planning information. It is slightly redundant in spelling out the return shape given an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short paragraphs, front-loaded with purpose, then routing, then return shape and cost guidance — well ordered and easy to scan. The detailed field enumeration overlaps with the output schema and could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only browse tool this covers everything an agent needs: what is listed, when to prefer find_references, what comes back, and how big the payloads are before fetching. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and nothing needs compensating for. The description instead documents the shape of the returned entries (name, title, description, fcp_* facets, approx_tokens), which helps an agent interpret results even though it is not strictly parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-plus-resource ('See what FinOps guidance is available') and enumerates the actual coverage areas (billing mechanics, commitment strategy, allocation/chargeback, AI cost, per-provider handbooks). It also names the sibling it is NOT (find_references), so an agent can distinguish the two without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: 'Use this to discover what the library covers.' Explicit alternative and its selection condition: when the question already names a domain, phase, persona or maturity, find_references returns only matches. This is a clean routing rule with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
get_live_figures
1 tool update
- Changed
get_reference1 field changed- added
Input schema / properties / sectionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Section" +}
Related MCP Connectors
Verified cloud cost forecasting for AI agents. AWS, GCP, Azure pricing matrix.
Verified cloud cost forecasting for AI agents. AWS, GCP, Azure pricing matrix.
Cloud, SaaS and AI spend in one system of record. Each saving applied for you or shipped as code.
- Costory FinOps MCPDeprecatedio.costory
FinOps agent MCP: one allocated view of cloud, AI and data costs for your team. Starter $300/mo
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to parse multi-cloud infrastructure-as-code files, query real-time pricing from AWS, Azure, and GCP, and generate cost estimates and comparison reports.62 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to pre-flight estimate query costs, enforce hard budgets, reconcile actual billed spend, and suggest cheaper rewrites across BigQuery, Snowflake, and Databricks.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to query multi-cloud costs, inventory, waste, and commitments across AWS, GCP, Cloudflare, and OVH through read-only MCP tools.Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables autonomous agents to detect and clean up idle or abandoned cloud GPU/disk resources for FinOps cost optimization.8-
Glama MCP Gateway
Add one secure layer between your agents and this server.