Skip to main content
Glama

CI/CD Pipeline Cost Calculator

pipeline-cost-calculator
Read-onlyIdempotent

Use this when a user asks how much their GitHub Actions CI/CD pipeline costs per month. Takes average job duration in minutes, jobs per run, runs per month and the runner label (ubuntu-latest, windows-latest, macos-latest or self-hosted; matched case-insensitively). Uses GitHub list prices for standard hosted runners effective 1 Jan 2026 and GitHub Free's 2,000 included minutes for private repositories, drawn at list price. Self-hosted minutes carry no GitHub charge.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
runnerNoRunner label, for example ubuntu-latest, windows-latest, macos-latest or self-hosted. Matched case-insensitively; defaults to Linux.
avg_job_minYesAverage job duration in minutes.
jobs_per_runYesJobs per workflow run.
runs_per_monthYesWorkflow runs per month.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
severityYes
next_stepYes
rates_as_ofYes
runner_typeYes
next_step_urlYes
why_follow_upYes
interpretationYes
billable_minutesYes
included_minutesYes
monthly_cost_usdYes
affiliate_contextNo
computation_basisYes
runner_multiplierYes
rate_per_minute_usdYes
included_minutes_usedYes
total_minutes_per_monthYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 schema fields changed
    • changedInput schema / properties / avg_job_min / description
      Previous value: -"avg job min used by this deterministic tool."New value: +"Average job duration in minutes."
    • changedInput schema / properties / avg_job_min / examples
      Previous value: -[
      -  1
      -]New value: +[
      +  8
      +]
    • addedInput schema / properties / avg_job_min / minimum
      Added value: +0
    • changedInput schema / properties / jobs_per_run / description
      Previous value: -"jobs per run used by this deterministic tool."New value: +"Jobs per workflow run."
    • changedInput schema / properties / jobs_per_run / examples
      Previous value: -[
      -  1
      -]New value: +[
      +  4
      +]
    • addedInput schema / properties / jobs_per_run / minimum
      Added value: +0
    • changedInput schema / properties / runner / description
      Previous value: -"runner used by this deterministic tool."New value: +"Runner label, for example ubuntu-latest, windows-latest, macos-latest or self-hosted. Matched case-insensitively; defaults to Linux."
    • changedInput schema / properties / runner / examples
      Previous value: -[
      -  "example"
      -]New value: +[
      +  "ubuntu-latest"
      +]
    • addedInput schema / properties / runner / maxLength
      Added value: +128
    • changedInput schema / properties / runs_per_month / description
      Previous value: -"runs per month used by this deterministic tool."New value: +"Workflow runs per month."
    • changedInput schema / properties / runs_per_month / examples
      Previous value: -[
      -  1
      -]New value: +[
      +  500
      +]
    • addedInput schema / properties / runs_per_month / minimum
      Added value: +0
    • addedOutput schema / properties / included_minutes
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / included_minutes_used
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / rate_per_minute_usd
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / rates_as_of
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / runner_type
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "billable_minutes",
      -  "computation_basis",
      -  "interpretation",
      -  "monthly_cost_usd",
      -  "next_step",
      -  "next_step_url",
      -  "runner_multiplier",
      -  "severity",
      -  "total_minutes_per_month",
      -  "why_follow_up"
      -]New value: +[
      +  "billable_minutes",
      +  "computation_basis",
      +  "included_minutes",
      +  "included_minutes_used",
      +  "interpretation",
      +  "monthly_cost_usd",
      +  "next_step",
      +  "next_step_url",
      +  "rate_per_minute_usd",
      +  "rates_as_of",
      +  "runner_multiplier",
      +  "runner_type",
      +  "severity",
      +  "total_minutes_per_month",
      +  "why_follow_up"
      +]
  2. Changed10 schema fields changed
    • addedInput schema / properties / avg_job_min / description
      Added value: +"avg job min used by this deterministic tool."
    • addedInput schema / properties / avg_job_min / examples
      Added value: +[
      +  1
      +]
    • addedInput schema / properties / jobs_per_run / description
      Added value: +"jobs per run used by this deterministic tool."
    • addedInput schema / properties / jobs_per_run / examples
      Added value: +[
      +  1
      +]
    • addedInput schema / properties / runner / description
      Added value: +"runner used by this deterministic tool."
    • addedInput schema / properties / runner / examples
      Added value: +[
      +  "example"
      +]
    • addedInput schema / properties / runs_per_month / description
      Added value: +"runs per month used by this deterministic tool."
    • addedInput schema / properties / runs_per_month / examples
      Added value: +[
      +  1
      +]
    • addedOutput schema / properties / computation_basis
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "billable_minutes",
      -  "interpretation",
      -  "monthly_cost_usd",
      -  "next_step",
      -  "next_step_url",
      -  "runner_multiplier",
      -  "severity",
      -  "total_minutes_per_month",
      -  "why_follow_up"
      -]New value: +[
      +  "billable_minutes",
      +  "computation_basis",
      +  "interpretation",
      +  "monthly_cost_usd",
      +  "next_step",
      +  "next_step_url",
      +  "runner_multiplier",
      +  "severity",
      +  "total_minutes_per_month",
      +  "why_follow_up"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "affiliate_context": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "affiliate": {
      +          "type": "string"
      +        },
      +        "cta_label": {
      +          "type": "string"
      +        },
      +        "disclosure": {
      +          "type": "string"
      +        },
      +        "framing": {
      +          "type": "string"
      +        },
      +        "posture": {
      +          "enum": [
      +            "secondary"
      +          ],
      +          "type": "string"
      +        },
      +        "slot_id": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": "string"
      +        },
      +        "variant": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "affiliate",
      +        "cta_label",
      +        "disclosure",
      +        "framing",
      +        "posture",
      +        "slot_id",
      +        "url",
      +        "variant"
      +      ],
      +      "type": "object"
      +    },
      +    "billable_minutes": {
      +      "type": "number"
      +    },
      +    "interpretation": {
      +      "type": "string"
      +    },
      +    "monthly_cost_usd": {
      +      "type": "number"
      +    },
      +    "next_step": {
      +      "type": "string"
      +    },
      +    "next_step_url": {
      +      "type": "string"
      +    },
      +    "runner_multiplier": {
      +      "type": "number"
      +    },
      +    "severity": {
      +      "type": "string"
      +    },
      +    "total_minutes_per_month": {
      +      "type": "number"
      +    },
      +    "why_follow_up": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "billable_minutes",
      +    "interpretation",
      +    "monthly_cost_usd",
      +    "next_step",
      +    "next_step_url",
      +    "runner_multiplier",
      +    "severity",
      +    "total_minutes_per_month",
      +    "why_follow_up"
      +  ],
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  5. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources