Skip to main content
Glama

Cloud FinOps Skill & MCP

Read one FinOps guide

get_reference
Read-onlyIdempotent

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, and ALWAYS before answering an advisory question (commitment sizing, chargeback design, allocation methodology) the library covers.

Pass section when the question is narrower than the file. The approx_tokens hint in the listing tells you when this matters: the provider pattern catalogues run past 25,000 tokens and are enumerated lists, so a question about S3 lifecycle wants one section of finops-aws-patterns, not all of it. Omit section for the whole file when you need the 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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
sectionNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • addedInput schema / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Section"
      +}
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description richly discloses behavior: exact success return shapes, section matching rules, case-insensitive partial matching, trailing count ignoring, unmatched-section fallback to heading lists, and error suggestions with string-distance matches. It even explains what content appears in the section response, including other_matching_sections. This goes far beyond the annotations and materially helps an agent predict outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place: purpose, usage conditions, parameter details, return shapes, and error behavior are each in logical sections. It is front-loaded with the core purpose and the most important usage rule before diving into parameter and return details. There is no filler or repetition of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two parameters, one required, and rich runtime behavior, the description is complete: it explains how to select the tool, how to invoke it with or without section, what each response shape looks like, and how to recover from both unknown-name and unmatched-section errors. The only omitted items, such as authentication or rate limits, are irrelevant for an annotated read-only, idempotent tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries full responsibility for parameter meaning. It fully compensates: name is illustrated with concrete examples, and section is explained with matching semantics, natural phrase examples, trailing-count behavior, and the fallback when nothing matches. An agent can correctly construct both parameters without any additional external knowledge.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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: 'Fetch the guidance on one FinOps topic... either whole or one section at a time.' It clearly distinguishes this reference-reading tool from sibling list/find tools by stating it returns the actual content of a known reference, and the title 'Read one FinOps guide' reinforces the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this tool 'after list_references or find_references told you which one serves the question, and ALWAYS before answering an advisory question.' It also gives concrete guidance on when to pass section versus omit it, referencing approx_tokens and file size. It does not explicitly name exclusion cases like 'use get_playbook for playbooks,' but the context is strong enough to route an agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.6/5.0
Disambiguation4/5

The two domains (playbooks/references) are cleanly separated, but within each, list_ vs find_ has genuine boundary ambiguity since find_ with no filters behaves like list_. The descriptions mitigate this with explicit cross-references, and get_ is clearly distinct (requires a name from the others).

Naming Consistency5/5

Flawless verb_noun pattern: three verbs (find_, get_, list_) applied identically across both content types, all snake_case, plural for collections and singular for single-item fetches. The convention is perfectly predictable.

Tool Count5/5

Six tools is ideal for a read-only content library with two resource types: list/find/get for playbooks and list/find/get for references. Each tool earns its place, and the symmetry makes the set easy to reason about.

Completeness4/5

The full discovery-to-retrieval lifecycle is covered for both content types: list (enumerate), find (filter), get (fetch detail). The main gap is the absence of a full-text or fuzzy search tool (find_ uses exact-match only), which could require agents to over-fetch and filter manually. There are no dead ends, and error hints help self-correction.