Skip to main content
Glama
605,282 tools. Updated 2026-09-23 23:53

"AWS Cost and Usage Analysis with Cost Optimization Recommendations" matching MCP tools:

  • Estimate the cost of an LLM/API workload (input + output tokens) for a usage-priced provider (OpenAI, Anthropic, AWS Bedrock…) from its real rate card.
    ConnectorNo auth
  • Analyzes AWS and Azure cloud pricing data alongside RIPE regional demand trends to generate Reserved Instance purchase recommendations for CTOs. Inputs include target cloud provider, instance family, region, and desired commitment term. Outputs include cost savings percentage, optimal RI quantity, and regional demand insights. Ideal for reducing cloud spend with data-driven decisions. Keywords: cloud cost optimization, reserved instances, AWS pricing, Azure pricing, RIPE demand trends.
    ConnectorNo auth
  • Analyzes AWS and Azure cloud pricing data alongside RIPE regional demand trends to generate Reserved Instance purchase recommendations for CTOs. Inputs include target cloud provider, instance family, region, and desired commitment term. Outputs include cost savings percentage, optimal RI quantity, and regional demand insights. Ideal for reducing cloud spend with data-driven decisions. Keywords: cloud cost optimization, reserved instances, AWS pricing, Azure pricing, RIPE demand trends.
    ConnectorNo auth
  • Analyzes AWS and Azure cloud pricing data alongside RIPE regional demand trends to generate Reserved Instance purchase recommendations for CTOs. Inputs include target cloud provider, instance family, region, and desired commitment term. Outputs include cost savings percentage, optimal RI quantity, and regional demand insights. Ideal for reducing cloud spend with data-driven decisions. Keywords: cloud cost optimization, reserved instances, AWS pricing, Azure pricing, RIPE demand trends.
    ConnectorNo auth
  • Get normalized AWS Cost Explorer cost and usage with daily breakdown and top services. The adapter drains NextPageToken internally.
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying AWS Cost and Usage Report data via Amazon Athena for cost-effective and detailed cost analysis.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables scanning AWS accounts for cost optimization opportunities by reading resource configurations and pricing data, without making any modifications.
    22
    MIT

Matching MCP Connectors

  • Cloudflare Workers MCP server: ai-cost-optimizer

  • US municipal development cost: aggregated impact + water/sewer tap fees per jurisdiction

  • Query verified raw EIA-923 fuel receipts and delivered fuel costs. Returns one Page 5 Fuel Receipts and Costs row per published receipt: plant/month, fuel, supplier, purchase type, source physical quantity, and delivered cost in EIA's stated cents/MMBtu. Filter by plant, month/range, exact source strings, state, fuel, cost status, or source-reported balancing authority code; `{"state":"TX","balancing_authority_code":"ERCO"}` returns an ERCOT slice in one call. Quantity units remain fuel-specific (short tons, barrels, or Mcf). EIA withholds costs for some plants. The raw `.` marker is preserved in `fuel_cost_raw`, the numeric cost is null, and `fuel_cost_status` explicitly reports `withheld` for unregulated receipts. Missing is never zero or imputed. This tool does not derive heat rates, efficiency, marginal cost, generation cost, or $/MWh; combine the cited raw atoms outside exascale.build if analysis requires those judgments. Every quantity or cost can be verified against its exact workbook cell.
    ConnectorNo auth
  • Find which dimension values drove a cost change between two periods. This is a before/after analysis — compare is required (`{}` auto-derives the previous window, same as query). Prefer suggest_groupby / search / get_context first, then pass 2–4 columns (max 8). Do not invent columns. filterCel omitted or "" is unfiltered (not AWS-only). nestingEdges: a child's spend sits inside the parent — do not sum a contributor with its ancestors or descendants; independent contributors may be summed. Prefer omitting aggregationMethod (SUM). EXAMPLES: • "Why did last month's EC2 cost change?" → { datePreset: "LAST_MONTH", compare: {}, filterCel: "cos_service_name in [\"AmazonEC2\"]", columns: ["cos_region", "cos_usage_type"] } • "What drove the RDS jump in May?" → { from: "2026-05-01", to: "2026-05-31", compare: { from: "2026-04-01", to: "2026-04-30" }, filterCel: "cos_provider in [\"AWS\"] && cos_service_name in [\"AmazonRDS\"]", columns: ["cos_sub_account_id", { column: "cos_charge_description", contains: "IOPS" }] }
    ConnectorOAuth
  • Fetch a single post by id: views, likes, comments, engagement rate, outlier scores for seven time windows, thumbnail and the owning profile. When a transcript or visual analysis already exists it is included at no extra cost. The visual analysis is a structured scene-by-scene breakdown (per-scene timing, on-screen text, visual elements and a recreation note) plus an overall-style summary. Request new enrichment via request_transcript (speech / on-screen text) or request_visual_analysis (scene breakdown). Use after search_outliers to deep-dive a result. Cost: 1 credit per call.
    ConnectorNo auth
  • MINIMUM VALID CALL: { "queries": [{ "type": "cost", "name": "a", "metricId": "cost", "currency": "USD" }], "datePreset": "MTD", "aggBy": "Day" } Required per series: type (cost|metric|usage|formula|budget|externalMetric) and name. Put labels in alias. Unified query tool for cost data, custom metrics, usage metrics, external (live integration) metrics, period comparisons, formulas, and budgets. QUERY NAMING: set type and name (prefer short ids like a/b/c for formulas); put human labels in alias (e.g. "Cost by environment") — never in name. Example: { type: "cost", name: "a", alias: "Cost by environment", groupBy: "cos_environment", ... }. For costs: metricId (cost column, default "cost") and currency (default "USD"). Use costMetricId and currency from get when aligning with a budget. For custom business metrics: use [{ type: "metric", metricId: "..." }] — get IDs from list_metrics. For infra usage metrics (e.g. CPU hours, network bytes): use [{ type: "usage", metricId: "..." }] — call suggest_usage_metrics first to discover valid metricIds for your scope. For live external metrics (not saved as Costory metrics): use [{ type: "externalMetric", provider: "...", integrationId: "...", metricName: "...", aggregator: "SUM", groupByFields: [], conditions: "..." }] — discover provider, integrationId, and metricName via list_metrics with includeExternal: true and a specific search term. Tsuga: metricName is the provider metric name; groupByFields are provider metric attributes; conditions is an optional provider filter string. Datadog: same shape as Tsuga — metricName is the Datadog metric name (e.g. system.cpu.user), groupByFields are tag keys (e.g. host, service), conditions is an optional Datadog tag filter (e.g. env:prod). When query is set it is the Datadog metrics query string (pass-through); metricName / aggregator / conditions / groupByFields are ignored; .rollup is required and the interval must be ≥ 24h (daily / weekly / monthly or seconds ≥ 86400). Costory will not fill an empty weekly series. CloudWatch: set provider: "cloudwatch"; metricName is Namespace/MetricName (e.g. AWS/EC2/CPUUtilization); groupByFields are CloudWatch dimension names (e.g. InstanceId); conditions is an optional dimension filter. BigQuery: set provider: "bigquery"; metricName is the fully-qualified table id (project.dataset.table); dateColumn, metricColumn, and gapFillingMethod are required — pick dateColumn/metricColumn from list_metrics `schema` (first DATE / first NUMERIC) and default gapFillingMethod to FORWARD_FILL; groupByFields are string column names (not CEL). S3: set provider: "s3"; identical field shape to bigquery — metricName is the fully-qualified table id returned by list_metrics (a Costory-managed external table over the customer's mirrored Parquet); same schema-derived columns. Use externalMetric for exploration when no saved metric matches; prefer saved { type: "metric" } when one exists. PERIOD: prefer `datePreset` (same DatePreset enum as dashboards/reports, e.g. MTD, LAST_MONTH, TRAILING_30_DAYS, LAST_3_MONTHS, YTD) over hand-computed from/to whenever a preset matches — mutually exclusive with from/to. Response includes the resolved period dates. For comparison: add compare: {} (or compare: { from, to }) — omit compare dates to auto-derive the preceding period (preset-aware, e.g. LAST_MONTH → previous calendar month). For formulas: add { type: "formula", formula: "a / b" } referencing other queries by name. For budgets: use [{ type: "budget", budgetId: "..." }] — despite the field name, this must be the budget version ID (same value as budgetVersionId from get); search returns the parent budget id only, so call get with that id to obtain budgetVersionId before querying. Optional chartType on each query: BAR, LINE, AREA, WATERFALL, or TABLE (defaults to LINE). groupBy is the SPLIT dimension, filterCel is the SCOPE (CEL). Before guessing CEL field names, call search with type: ["dimensions"] — empty query lists all fields; a keyword narrows to matching values. Costory label dimensions use a cos_ prefix (e.g. cos_service_name). Unlabelled resources have null on label dimensions; use filterCel with == null / != null (not is_null or string "null"). Custom virtual dimensions: use immutable `bqName` from list/get VDIM tools as `groupBy` / `filterCel` (not display `name`). Poll `computeStatus` until `COMPLETED` after publish. Optional analyze.changePoint (true or { ignoreWeekends }) runs change-point detection once per query after a timeseries result (incompatible with compare). Optional limit (integer 1–1000): max groups/rows per series. Do NOT set limit unless you need a different cap — when omitted, results default to 100 groups. Set limit above 100 (e.g. 250 or 500) when the user asks for a long tail or full breakdown list. OPTIONAL: After receiving results, consider calling "list_events" for the same date range to correlate cost changes with events, and "suggest_actions" to present follow-up options to the user. EXAMPLES: • "What are my total costs this month?" → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }], datePreset: "MTD", aggBy: "Day" } • "Break down AWS costs by service over the last 90 days" → { queries: [{ type: "cost", name: "a", alias: "AWS by service", metricId: "cost", currency: "USD", groupBy: "cos_service_name", filterCel: "cos_provider in [\"AWS\"]" }], datePreset: "TRAILING_90_DAYS", aggBy: "Week" } • "Show costs for resources without an environment label" → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD", filterCel: "cos_environment == null" }], datePreset: "TRAILING_30_DAYS", aggBy: "Day" } • "How did our costs change vs last month?" → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }], datePreset: "LAST_MONTH", compare: {} } • "Show CPU hours alongside compute costs" (call suggest_usage_metrics first to get valid metricIds) → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }, { type: "usage", name: "b", metricId: "k8s_cpu_hours" }], datePreset: "TRAILING_30_DAYS", aggBy: "Week" } • "What is our cost per request?" → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }, { type: "metric", name: "b", metricId: "<metric-id>" }, { type: "formula", name: "c", formula: "a / b" }], datePreset: "TRAILING_30_DAYS" } • "Cost per request volume" (after list_metrics with includeExternal: true and search: "request") → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }, { type: "externalMetric", name: "b", provider: "tsuga", integrationId: "<integration-id>", metricName: "<metric-name>", aggregator: "SUM" }, { type: "formula", name: "c", formula: "a / b" }], datePreset: "TRAILING_30_DAYS", aggBy: "Week" } • "Cost per BigQuery revenue table" (after list_metrics with includeExternal: true and search: "revenue") → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }, { type: "externalMetric", name: "b", provider: "bigquery", integrationId: "<integration-id>", metricName: "my-project.analytics.revenue", dateColumn: "event_date", metricColumn: "amount", gapFillingMethod: "ZERO", aggregator: "SUM" }, { type: "formula", name: "c", formula: "a / b" }], datePreset: "TRAILING_30_DAYS", aggBy: "Week" } • "Cost per CPU usage from Datadog" (after list_metrics with includeExternal: true and search: "cpu") → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }, { type: "externalMetric", name: "b", provider: "datadog", integrationId: "<integration-id>", metricName: "system.cpu.user", aggregator: "AVG", groupByFields: ["host"] }, { type: "formula", name: "c", formula: "a / b" }], datePreset: "TRAILING_30_DAYS", aggBy: "Week" } • "Cost per EC2 CPU from CloudWatch" (after list_metrics with includeExternal: true and search: "CPUUtilization") → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }, { type: "externalMetric", name: "b", provider: "cloudwatch", integrationId: "<integration-id>", metricName: "AWS/EC2/CPUUtilization", aggregator: "AVG", groupByFields: ["InstanceId"] }, { type: "formula", name: "c", formula: "a / b" }], datePreset: "TRAILING_30_DAYS", aggBy: "Week" } • "Budget per calendar month" → { queries: [{ type: "budget", name: "a", budgetId: "<budgetVersionId>" }], datePreset: "LAST_3_MONTHS", aggBy: "Month" } (budgetVersionId from get, not the parent id from search) • "Budget month-to-date by day (cumulative within each month — which day did we reach the budget?)" → { queries: [{ type: "budget", name: "a", budgetId: "<budgetVersionId>", rollingAggregation: { aggregator: "SUM", window: { preset: "MONTH" } } }], datePreset: "MTD", aggBy: "Day" } • "Formula: month-to-date cost vs month-to-date budget (both rolling SUM per month, e.g. utilization a/b)" → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD", rollingAggregation: { aggregator: "SUM", window: { preset: "MONTH" } } }, { type: "budget", name: "b", budgetId: "<budgetVersionId>", rollingAggregation: { aggregator: "SUM", window: { preset: "MONTH" } } }, { type: "formula", name: "c", formula: "a / b" }], datePreset: "MTD", aggBy: "Day" } • Custom one-off range → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD" }], from: "2026-01-15", to: "2026-02-12", aggBy: "Day" }
    ConnectorOAuth
  • List sync health for every cost/event/usage connection this account has — last synced time, next scheduled sync, the outcome of its most recent run, and `is_overdue` (no successful sync within twice the connection's own effective sync interval). `status` is only ever set on a successful sync and is never flipped back on failure, so `is_overdue` — not `status` — is the real signal that a connection has gone stale. Check this before asserting that recent cost or usage data is complete, especially right before calling query_costs or query_usage for a very recent date range. Mirrors GET /api/accounts/:accountId/data-health.
    ConnectorNo auth
  • Backtest a cost-alert condition BEFORE creating it: replays the `condition` against the last `lookbackDays` (default 45) of data and reports how many times it would have fired. Takes the same queries + condition + dedup as create_alert (no notification channel needed). The dedup window is per groupBy value; delivery stays one message listing newly eligible groups. Returns the evaluation window, `firingDays` (distinct days the condition held), `firingRows` (per-group fires), `notificationsCount` (days on which at least one newly eligible group would notify) and a sample of firing dates with per-group `state`. Use this to sanity-check a condition/threshold (and tune dedup) before calling create_alert. EXAMPLE: "Would 'alert if 7-day AWS spend tops $50k' have fired this month?" → { queries: [{ type: "cost", name: "a", metricId: "cost", currency: "USD", filterCel: "cos_provider in [\"AWS\"]" }], condition: "rollingSum(a, 7, DAY) > 50000", dedup: { kind: "CALENDAR", calendarUnit: "WEEK" }, lookbackDays: 30 }
    ConnectorOAuth
  • Retrieve a completed analysis result by analysis ID. Returns scores, competency breakdown, and recommendations. analysis_id comes from atlas_start_gem_analysis response or atlas_list_analyses. Only works after analysis is completed -- check with careerproof_task_status first. Free.
    ConnectorOAuth
  • Use when benchmarking EHR maintenance costs before a contract renewal or evaluating health IT budget efficiency. Returns benchmark cost per licensed bed with optional gap analysis when actual cost and bed count are provided. Example: Epic maintenance median $4,500/bed — 300-bed hospital at $6,200/bed is 38% above market — renegotiation trigger especially strong at 5+ year renewal cycles. Source: KLAS 2024, Kaufman Hall EHR TCO composite. $0.02 USDC per call.
    ConnectorNo auth
  • Get a cheaper equivalent plan by substituting models with lower-cost alternatives. Call after burnrate_estimate if the estimated cost exceeds your budget. Returns the optimized plan with substituted models, new per-step costs, total savings, and whether the target_budget is met. Optionally set target_budget to constrain the optimization. Costs 1 credit.
    ConnectorNo auth
  • Perform comprehensive audit of a website URL. Fetches the URL content ONCE and provides a combined report with: - Classification: category, subcategory, language, sentiment, demographics - SEO Analysis: score, grade, issues, recommendations - EEAT Analysis: experience, expertise, authoritativeness, trustworthiness scores - AEO Analysis: AI answer engine optimization score, metrics, issues, signals (includes full Citation Readiness analysis in the nested 'citation' key) - Advertiser Matching: best-fit advertising networks with scores - Similar Sites: competitor/related sites from the same category This is more efficient than calling classify_url, analyze_seo, analyze_eeat, analyze_aeo, select_advertiser, and find_similar_sites separately as it only fetches the page once. Args: url: The website URL to audit (e.g., "https://example.com"). Returns: Comprehensive audit report with: - url: The analyzed URL - classification: Category, subcategory, language, sentiment, demographics - seo: Score, grade, issues, recommendations - eeat: EEAT score, grade, category scores, issues, signals - aeo: AEO score, grade, metrics, issues, signals (includes citation results) - advertisers: Matched advertising networks with scores - similar_sites: Related sites from the same category (up to 10) - cached: Whether result was from cache
    ConnectorNo auth
  • Search Costory product docs (Mintlify) and knowledge base in parallel. Synthesize both: Mintlify is the product source of truth, the KB complements with org-specific or internal detail; if they conflict, trust Mintlify. Returns Mintlify matches (titles, snippets, and full docs URLs (`Url: https://docs.costory.io/...`)) and KB articles (title, summary, full markdown). Optional limit (1–10, default 5) applies to KB. For a full Mintlify page, use get_documentation_page. When citing a page in chat, use the full `Url:` value verbatim as the markdown href — do not convert to a relative app path. EXAMPLES: • "How do I create a budget alert?" → { query: "budget alert" } • "Why do costs differ from AWS Cost Explorer?" → { query: "AWS Cost Explorer discrepancy", limit: 3 }
    ConnectorOAuth
  • List active cost-reduction recommendations for this account — sourced from each provider's own already-computed engine (AWS Cost Explorer, Azure Advisor, GCP Recommender), not something Plutus computes itself. `type` is one of: `terminate` (an idle resource to shut down), `modify` (an overprovisioned one to downsize), `commitment_savings_plan` or `commitment_reservation` (a commitment worth *buying* — an AWS Savings Plan / Reserved Instance, Azure reservation or savings plan, or GCP committed use discount). Commitment rows have no `current_instance_type`/`recommended_instance_type` — they are a purchase, not an instance swap; their term, payment option, lookback window and hourly commitment are in `detail`. Only one term/payment/lookback variant per commitment is surfaced (AWS: 30-day lookback, 1-year, no upfront — Cost Explorer's own console default), so do not report these as the only commitment options available. Mirrors GET /api/accounts/:accountId/savings-recommendations. Each recommendation carries the provider's own figure in its own `currency`; the total is in USD (stated in the response's `currency` field), since providers may bill in different ones.
    ConnectorNo auth
  • Analyze tiered AWS/GCP public cloud internet data transfer egress pricing versus Cloudflare Zero-Egress Bandwidth Alliance and edge caching proxies, quantifying monthly and annual infrastructure cost savings. Behavior: Deterministic, idempotent calculation with zero external side effects. Calculates tiered AWS/GCP egress charges ($0.09/GB for first 10TB, $0.085/GB for next 40TB, $0.07/GB for next 100TB, $0.05/GB beyond). Models edge cache offload reduction and compares against Cloudflare zero-egress routing. Returns monthly and annual gross egress costs, post-cache costs, and total net savings. Usage Guidelines: Use for cloud architecture budgeting, FinOps reviews, and evaluating CDN caching or Cloudflare migration economics. Do not use for LLM token pricing; use ai_token_arbitrage instead.
    ConnectorNo auth
  • Use when benchmarking EHR maintenance costs before a contract renewal or evaluating health IT budget efficiency. Returns benchmark cost per licensed bed with optional gap analysis when actual cost and bed count are provided. Example: Epic maintenance median $4,500/bed — 300-bed hospital at $6,200/bed is 38% above market — renegotiation trigger especially strong at 5+ year renewal cycles. Source: KLAS 2024, Kaufman Hall EHR TCO composite. $0.02 USDC per call.
    ConnectorNo auth