Koskamo

Cloud FinOps Skill & MCP

Provides FinOps Foundation aligned knowledge for AI agents, covering cloud cost optimization for AWS, Azure, GCP, and OCI, AI inference economics, Kubernetes, data platforms, allocation, chargeback, anomaly management, waste detection, and GreenOps. It offers a hosted MCP server with read-only tools to list, search, and fetch reference runbooks.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Cloud FinOps Skill & MCP logo, by OptimNowCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by OptimNow
MCP endpoint (Streamable HTTP)
https://mcp.optimnow.io/mcp
Vendor documentation

What its tools do

7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

7 of 7 have a description · 7 of 7 declare behavior hints · 0 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Optimize cloud costs across AWS, Azure, GCP, and OCI
  • Analyze AI inference economics and spend
  • Detect waste and manage anomalies in cloud resources
  • Perform allocation and chargeback calculations

Source and maintenance

Community listingRegistry 1.49.1
Maintenance checked

Protocol and capabilities

Server
cloud-finops 1.49.1
MCP protocol negotiated in check
2025-11-25
Tools
7 advertised
Resources
6 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "experimental": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Cloud FinOps knowledge by OptimNow. Two retrieval surfaces: REFERENCES (long-form provider/discipline files) and PLAYBOOKS (small named-pattern runbooks for specific waste patterns). REFERENCES: list_references() to discover, find_references(domain=, capability=, phase=, persona=, maturity=, persona_primary_only=) to narrow by FinOps Capability/Phase facets, get_reference(name=, section=) to fetch one body. Every listing entry carries approx_tokens: references run from about 2,000 to about 15,000 tokens. get_reference(name=, section="<heading phrase>") returns one section instead of the whole file - section matches H2 and H3 headings case-insensitively and partially, and a miss returns the file's available_sections rather than the whole body. The Azure pattern catalogue (finops-azure-patterns) is an enumerated list, usually needed one section at a time; the AWS catalogue is one file per service family (finops-aws-patterns-compute, -storage, -databases, -networking, -other). PLAYBOOKS: list_playbooks() to discover, find_playbooks(scope=, service=, waste_category=, confidence=) to narrow by pattern facets, get_playbook(name=) to fetch one body. A playbook serves 'how do I detect/fix this specific pattern' (zombie NAT, snapshot sprawl, idle ELB, etc.); a reference serves billing mechanics, commitment strategy, allocation methodology and cross-pattern reasoning. This connector has no access to the user's cloud accounts. For questions about the user's own resources ('which of my RIs are about to expire', 'which of our VMs run for nothing'), the matching playbook includes a detection query the user can run in their own account. For a specific waste or cost-fix question ('my NAT gateway processes 10TB to S3', 'should I delete these old snapshots'), find_playbooks returns the named runbook with its tested detection query. Runbooks exist for NAT gateways and VPC endpoints, expiring Savings Plans / RIs / reservations, snapshots, S3 lifecycle, idle or stopped VMs, orphaned disks and IPs, GPU and SageMaker sizing, and more. References carry billing mechanics, not current prices: any figure inside is illustrative and dated inline. Where a reference quotes a figure from an OptimToken guide with its date, get_live_figures(guide=) returns that guide's current figures with the snapshotDate to quote them by. Advisory questions - how much to commit, how to size, how to allocate or charge back - are served by a matching reference (finops-aws-commitments for Savings Plan sizing, finops-chargeback for recharge design), which carries the decision rules and cadence tables behind a defensible answer.

Tools

7 advertised

list_references — Browse the FinOps knowledge library
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_references input schema
{
  "type": "object",
  "title": "list_referencesArguments",
  "properties": {}
}
list_references output schema
{
  "type": "object",
  "title": "list_referencesDictOutput",
  "additionalProperties": true
}
list_references annotations
{
  "title": "Browse the FinOps knowledge library",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_reference — Read one FinOps guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_reference input schema
{
  "type": "object",
  "title": "get_referenceArguments",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    },
    "section": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Section",
      "default": null
    }
  }
}
get_reference output schema
{
  "type": "object",
  "title": "get_referenceDictOutput",
  "additionalProperties": true
}
get_reference annotations
{
  "title": "Read one FinOps guide",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_references — Find the right FinOps guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

find_references input schema
{
  "type": "object",
  "title": "find_referencesArguments",
  "properties": {
    "phase": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Phase",
      "default": null
    },
    "domain": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Domain",
      "default": null
    },
    "persona": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Persona",
      "default": null
    },
    "maturity": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Maturity",
      "default": null
    },
    "capability": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capability",
      "default": null
    },
    "persona_primary_only": {
      "type": "boolean",
      "title": "Persona Primary Only",
      "default": false
    }
  }
}
find_references output schema
{
  "type": "object",
  "title": "find_referencesDictOutput",
  "additionalProperties": true
}
find_references annotations
{
  "title": "Find the right FinOps guide",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_playbooks — Browse the cloud waste runbooks
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_playbooks input schema
{
  "type": "object",
  "title": "list_playbooksArguments",
  "properties": {}
}
list_playbooks output schema
{
  "type": "object",
  "title": "list_playbooksDictOutput",
  "additionalProperties": true
}
list_playbooks annotations
{
  "title": "Browse the cloud waste runbooks",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_playbook — Read one waste runbook
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_playbook input schema
{
  "type": "object",
  "title": "get_playbookArguments",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    }
  }
}
get_playbook output schema
{
  "type": "object",
  "title": "get_playbookDictOutput",
  "additionalProperties": true
}
get_playbook annotations
{
  "title": "Read one waste runbook",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_playbooks — Find a waste runbook
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

find_playbooks input schema
{
  "type": "object",
  "title": "find_playbooksArguments",
  "properties": {
    "scope": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Scope",
      "default": null
    },
    "service": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Service",
      "default": null
    },
    "confidence": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Confidence",
      "default": null
    },
    "waste_category": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Waste Category",
      "default": null
    }
  }
}
find_playbooks output schema
{
  "type": "object",
  "title": "find_playbooksDictOutput",
  "additionalProperties": true
}
find_playbooks annotations
{
  "title": "Find a waste runbook",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_live_figures — Current figures from an OptimToken guide
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_live_figures input schema
{
  "type": "object",
  "title": "get_live_figuresArguments",
  "required": [
    "guide"
  ],
  "properties": {
    "guide": {
      "type": "string",
      "title": "Guide"
    }
  }
}
get_live_figures output schema
{
  "type": "object",
  "title": "get_live_figuresDictOutput",
  "additionalProperties": true
}
get_live_figures annotations
{
  "title": "Current figures from an OptimToken guide",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

6 advertised

Playbook viewer

Advertised by the server during the last successful anonymous check.

MCP Apps UI resource linked from ``get_playbook``. Self-contained HTML/JS that renders the tool result's markdown as labelled sections (Problem / Symptoms / Detection / Fix / Anti-pattern / See also) inside the sandboxed iframe the host provides. v2 adds a Copy button on every code block, a checkable Fix checklist (local state only), and clickable ``playbooks/<slug>.md`` See-also links that reload the viewer via an app-initiated ``get_playbook`` call.

Playbook viewer URI
ui://cloud-finops/playbook-viewer

MIME type: text/html;profile=mcp-app

Playbook explorer

Advertised by the server during the last successful anonymous check.

MCP Apps UI resource linked from ``list_playbooks`` and ``find_playbooks``. Card grid over the returned playbooks with client-side facet filters (scope, waste category, confidence - values derived from the data), a coverage-matrix tab (waste_category x scope counts; a zero cell is a visually distinct coverage gap), and an inline playbook panel opened via an app-initiated ``get_playbook`` call. One resource serves both tools because a tool declares a single ``ui.resourceUri``.

Playbook explorer URI
ui://cloud-finops/playbook-explorer

MIME type: text/html;profile=mcp-app

Reference browser

Advertised by the server during the last successful anonymous check.

MCP Apps UI resource linked from ``list_references`` and ``find_references``. Dropdown row over the five FCP facets (values derived from the data), live-filtered list of references (title + one-line description), and a minimal-markdown reading panel fed by an app-initiated ``get_reference`` call.

Reference browser URI
ui://cloud-finops/reference-browser

MIME type: text/html;profile=mcp-app

Playbook viewer (apps-sdk)

Advertised by the server during the last successful anonymous check.

Apps-sdk variant of the playbook viewer widget.

Playbook viewer (apps-sdk) URI
ui://cloud-finops/apps-sdk/playbook-viewer

MIME type: text/html+skybridge

Playbook explorer (apps-sdk)

Advertised by the server during the last successful anonymous check.

Apps-sdk variant of the playbook explorer widget.

Playbook explorer (apps-sdk) URI
ui://cloud-finops/apps-sdk/playbook-explorer

MIME type: text/html+skybridge

Reference browser (apps-sdk)

Advertised by the server during the last successful anonymous check.

Apps-sdk variant of the reference browser widget.

Reference browser (apps-sdk) URI
ui://cloud-finops/apps-sdk/reference-browser

MIME type: text/html+skybridge

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1312 ms
95th percentile latency
1312 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1312 ms · metadata changed · 7 tool(s), 6 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http cloud-finops-skill-mcp-optimnow https://mcp.optimnow.io/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add cloud-finops-skill-mcp-optimnow --url https://mcp.optimnow.io/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable cloud-finops-skill-mcp-optimnow in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "cloud-finops-skill-mcp-optimnow": {
      "url": "https://mcp.optimnow.io/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "cloud-finops-skill-mcp-optimnow": {
      "type": "streamableHttp",
      "url": "https://mcp.optimnow.io/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start cloud-finops-skill-mcp-optimnow and inspect its tools.
VS Code configuration
{
  "servers": {
    "cloud-finops-skill-mcp-optimnow": {
      "type": "http",
      "url": "https://mcp.optimnow.io/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http cloud-finops-skill-mcp-optimnow https://mcp.optimnow.io/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.optimnow.io/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "cloud-finops-skill-mcp-optimnow": {
      "serverUrl": "https://mcp.optimnow.io/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Cloud FinOps Skill & MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.