Skip to main content
Glama

Audit a stack (code + billing)

audit_stack
Read-onlyIdempotent

Use when the user wants their stack checked as a whole: several subscriptions, the paid services in a codebase, or a portfolio of products ('audit what we pay for', 'what can we cut?'). One line per service with vendor, plan, what they pay, seats, the features they use and usage (or evidence strings); add project for a portfolio and account for a shared bill. Per service: status (eligible = a cheaper path checked end to end; needs_info = likely cheaper but a check is open, so ask its questions; keep; no_recipe), the best path, right_size, overlaps, and levers that are not counted as savings. Totals keep prices the user confirmed apart from modeled list prices. If facts are missing, start_audit says which ones matter first. Send vendor names, feature names, numbers and prices only: never source code, secrets or raw invoices. Stackcut stores the arguments of tool calls to improve its recommendations (vendor names, prices, seats, features, usage numbers, billing amounts and project descriptions; account keys only as a one-way hash, billing and validation sources not at all; never IP addresses). Tool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.

Input Schema

NameRequiredDescriptionDefault
decisionNoconsolidate: overlaps on every job each tool does
servicesYes
limit_pathsNo
active_usersNoPeople or accounts active in the last 30 days (0 = unused: cleanup levers and sanity checks)
revenue_usd_per_monthNoThe product's revenue per month (context for sanity checks: no revenue, cost per user, fees vs revenue; never a cap)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / services / items / properties / usage / description
      Previous value: -"Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, identified_events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, boards, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections, searches_per_hour, sms_per_month, vectors_stored, vector_queries_per_month, cache_commands_per_month, mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number."New value: +"Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, identified_events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, boards, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections, searches_per_hour, sms_per_month, vectors_stored, vector_queries_per_month, cache_commands_per_month, mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month, hosts, tickets_per_month (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number."
    • addedInput schema / properties / services / items / properties / usage / properties / hosts
      Added value: +{
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / tickets_per_month
      Added value: +{
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
  2. Changed4 schema fields changed
    • addedInput schema / properties / decision
      Added value: +{
      +  "description": "consolidate: overlaps on every job each tool does",
      +  "enum": [
      +    "cut_spend",
      +    "consolidate",
      +    "replace_one",
      +    "choose_stack",
      +    "check_in"
      +  ],
      +  "maxLength": 2000,
      +  "type": "string"
      +}
    • changedInput schema / properties / services / items / properties / usage / description
      Previous value: -"Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections, searches_per_hour, sms_per_month, vectors_stored, vector_queries_per_month, cache_commands_per_month, mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number."New value: +"Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, identified_events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, boards, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections, searches_per_hour, sms_per_month, vectors_stored, vector_queries_per_month, cache_commands_per_month, mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number."
    • addedInput schema / properties / services / items / properties / usage / properties / boards
      Added value: +{
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / identified_events_per_month
      Added value: +{
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
  3. Changed82 schema fields changed
    • addedInput schema / properties / services / items / properties / billing
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Billing evidence: scope (dedicated, shared or unknown), account_id (a non-secret alias; the account key), allocated_monthly_usd (attribution only, never a saving), avoidable_monthly_usd with avoidability_confirmed (what leaving actually removes from the bill; 0 is valid), commitment_months_remaining (non-refundable months left; 0 only when cancellable now) and source (a reference, no private contents). With billing, a path is eligible only once the avoidable amount, scope, commitment and source are all given",
      +  "properties": {
      +    "account_id": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "allocated_monthly_usd": {
      +      "maximum": 1000000000000,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "avoidability_confirmed": {
      +      "type": "boolean"
      +    },
      +    "avoidable_monthly_usd": {
      +      "maximum": 1000000000000,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "commitment_months_remaining": {
      +      "maximum": 120,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "scope": {
      +      "enum": [
      +        "dedicated",
      +        "shared",
      +        "unknown"
      +      ],
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    "source": {
      +      "maxLength": 1000,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / services / items / properties / files_referencing / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / replacement_validation
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "A replacement path the user checked themselves: its current price, capacity, burst limits and paid add-ons against their usage. It answers that path's capacity checks (never its must-haves) and ranks it first",
      +  "properties": {
      +    "capacity_and_price_confirmed": {
      +      "description": "true only after checking the price, capacity, burst limits and required add-ons",
      +      "type": "boolean"
      +    },
      +    "path_id": {
      +      "description": "The path id (from find_alternatives or audit_stack)",
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "Where the check comes from (usage report, pricing page, quote); no private contents",
      +      "maxLength": 1000,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "path_id",
      +    "capacity_and_price_confirmed",
      +    "source"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / services / items / properties / service_id
      Added value: +{
      +  "description": "A distinct bill when the same vendor appears more than once (an account key, like account; lines with the same key are one bill)",
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / MAU / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / active_accounts / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / apps / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / audio_minutes_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / bandwidth_gb / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / browser_hours_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / cache_commands_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / cached_tokens_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / call_participants / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / characters_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / concurrent_sessions / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / contacts / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / cpu_ms_per_request / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / credits_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / credits_usd_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / db_gb / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / disputes_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / domains / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / emails_per_day / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / emails_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / errors_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / event_types / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / events_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / files / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / gmv_usd_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / gpu_seconds_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / history_days / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / images_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / inbound_emails_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / inboxes / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / job_executions_per_day / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / job_executions_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / keywords_tracked / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / mau / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / meeting_minutes / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / members / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / monitors / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / mtu / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / object_reads_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / object_writes_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / pageviews_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / payout_volume_usd_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / payouts_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / phone_minutes_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / projects / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / proxy_gb_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / records / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / requests_per_day / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / requests_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / responses_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / revenue_usd_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / sandbox_hours_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / scim_connections / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / searches_per_hour / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / searches_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / seats / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / session_minutes / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / sites / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / sms_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / sso_connections / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / sso_users / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / storage_gb / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / stream_hours_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / tasks_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / tokens_in_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / tokens_out_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / tokens_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / transactions_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / vcpu_hours_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / vector_queries_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / vector_read_units_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / vector_write_units_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / vectors_stored / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / verifications_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / video_minutes / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / video_minutes_delivered_per_month / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / video_minutes_stored / maximum
      Added value: +1000000000000
    • addedInput schema / properties / services / items / properties / usage / properties / videos / maximum
      Added value: +1000000000000
  4. Changed23 schema fields changed
    • addedInput schema / properties / active_users
      Added value: +{
      +  "description": "People or accounts active in the last 30 days (0 = unused: cleanup levers and sanity checks)",
      +  "maximum": 1000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / revenue_usd_per_month
      Added value: +{
      +  "description": "The product's revenue per month (context for sanity checks: no revenue, cost per user, fees vs revenue; never a cap)",
      +  "maximum": 1000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / account
      Added value: +{
      +  "description": "Billing account key (e.g. 'supabase-org-main'): lines with the same vendor and key share one bill; different keys are separate bills. Give the bill once",
      +  "maxLength": 100,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / services / items / properties / active_users
      Added value: +{
      +  "description": "People or accounts active in the last 30 days (0 = unused: cleanup levers and sanity checks)",
      +  "maximum": 1000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / services / items / properties / confidence / description
      Previous value: -"detect.mjs output (ignored)"New value: +"detect.mjs output: 'low' (only a config file) means no paid plan is assumed"
    • addedInput schema / properties / services / items / properties / confirmed
      Added value: +{
      +  "description": "true when the user confirmed they pay for this (with plan: its list price counts as confirmed spend). Scanner-only lines are unconfirmed",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / services / items / properties / files_referencing / description
      Previous value: -"detect.mjs output (ignored)"New value: +"detect.mjs output: marks the line as scan-only (unconfirmed); never read as usage"
    • addedInput schema / properties / services / items / properties / last_active
      Added value: +{
      +  "description": "When this resource (project, app, account) was last used: an ISO date ('2026-03-10'), 'never', or '5 months ago'. 90+ days idle or never used gets a cleanup lever",
      +  "maxLength": 100,
      +  "type": "string"
      +}
    • addedInput schema / properties / services / items / properties / revenue_usd_per_month
      Added value: +{
      +  "description": "The product's revenue per month (context for sanity checks: no revenue, cost per user, fees vs revenue; never a cap)",
      +  "maximum": 1000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / shared_with
      Added value: +{
      +  "description": "How many products share this bill (one account, org or team), when only this product is audited: moving one product off it saves only what it adds to the bill, never the whole bill. monthly_spend_usd is then the whole account's bill",
      +  "maximum": 100000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / services / items / properties / usage / description
      Previous value: -"Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number."New value: +"Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections, searches_per_hour, sms_per_month, vectors_stored, vector_queries_per_month, cache_commands_per_month, mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number."
    • addedInput schema / properties / services / items / properties / usage / properties / cache_commands_per_month
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / gpu_seconds_per_month
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / mtu
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / phone_minutes_per_month
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / revenue_usd_per_month
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / searches_per_hour
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / sms_per_month
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / vector_queries_per_month
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / vector_read_units_per_month
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / vector_write_units_per_month
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / services / items / properties / usage / properties / vectors_stored
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / services / maxItems
      Previous value: -60New value: +200
  5. Changed23 schema fields changed
    • changedInput schema / properties / services / items / additionalProperties
      Previous value: -trueNew value: +false
    • addedInput schema / properties / services / items / properties / category
      Added value: +{
      +  "description": "detect.mjs output (ignored)",
      +  "maxLength": 100,
      +  "type": "string"
      +}
    • addedInput schema / properties / services / items / properties / confidence
      Added value: +{
      +  "description": "detect.mjs output (ignored)",
      +  "maxLength": 20,
      +  "type": "string"
      +}
    • addedInput schema / properties / services / items / properties / evidence / description
      Added value: +"Scan evidence labels and usage facts in words ('db 1.5 GB', '40,000 emails/mo', '37 domains')"
    • addedInput schema / properties / services / items / properties / evidence / items / maxLength
      Added value: +500
    • addedInput schema / properties / services / items / properties / evidence / maxItems
      Added value: +50
    • addedInput schema / properties / services / items / properties / feature_counts
      Added value: +{
      +  "description": "detect.mjs output (ignored)",
      +  "items": {
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "type": "array"
      +}
    • changedInput schema / properties / services / items / properties / features_used / description
      Previous value: -"Features the code or the user relies on"New value: +"Features the code or the user relies on; sizes and counts ('4,000 contacts') are read as usage"
    • addedInput schema / properties / services / items / properties / features_used / items / maxLength
      Added value: +200
    • addedInput schema / properties / services / items / properties / features_used / maxItems
      Added value: +50
    • addedInput schema / properties / services / items / properties / files_referencing
      Added value: +{
      +  "description": "detect.mjs output (ignored)",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / services / items / properties / in_catalog
      Added value: +{
      +  "description": "detect.mjs output (ignored)",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / services / items / properties / monthly_spend_usd / description
      Previous value: -"What they pay per month for it, if known"New value: +"What they pay per month for it, all seats, if known"
    • addedInput schema / properties / services / items / properties / monthly_spend_usd / maximum
      Added value: +1000000
    • addedInput schema / properties / services / items / properties / name
      Added value: +{
      +  "description": "detect.mjs output (ignored)",
      +  "maxLength": 200,
      +  "type": "string"
      +}
    • addedInput schema / properties / services / items / properties / plan
      Added value: +{
      +  "description": "Their plan, e.g. 'Business Standard' (else read from the name or evidence)",
      +  "maxLength": 100,
      +  "type": "string"
      +}
    • addedInput schema / properties / services / items / properties / project
      Added value: +{
      +  "description": "Which of their projects or products this line is for (portfolio audits): lines of one vendor across projects are audited as one account. Give each project's own usage on its line and the account's bill once",
      +  "maxLength": 100,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / services / items / properties / seats / description
      Added value: +"Paid seats"
    • addedInput schema / properties / services / items / properties / seats / maximum
      Added value: +100000
    • addedInput schema / properties / services / items / properties / usage
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number.",
      +  "properties": {
      +    "MAU": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "active_accounts": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "apps": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "audio_minutes_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "bandwidth_gb": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "browser_hours_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "cached_tokens_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "call_participants": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "characters_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "concurrent_sessions": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "contacts": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "cpu_ms_per_request": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "credits_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "credits_usd_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "db_gb": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "disputes_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "domains": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "emails_per_day": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "emails_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "errors_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "event_types": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "events_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "files": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "gmv_usd_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "history_days": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "images_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "inbound_emails_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "inboxes": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "job_executions_per_day": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "job_executions_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "keywords_tracked": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "mau": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "meeting_minutes": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "members": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "monitors": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "object_reads_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "object_writes_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "pageviews_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "payout_volume_usd_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "payouts_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "projects": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "proxy_gb_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "records": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "requests_per_day": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "requests_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "responses_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "sandbox_hours_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "scim_connections": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "searches_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "seats": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "session_minutes": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "sites": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "sso_connections": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "sso_users": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "storage_gb": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "stream_hours_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "tasks_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "tokens_in_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "tokens_out_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "tokens_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "transactions_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "vcpu_hours_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "verifications_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "video_minutes": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "video_minutes_delivered_per_month": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "video_minutes_stored": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "videos": {
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedInput schema / properties / services / items / properties / vendor / description
      Previous value: -"Vendor id from the scan (e.g. 'sendgrid') or a product name ('Airtable')"New value: +"Vendor id from the scan (e.g. 'sendgrid') or a product name as on the invoice ('Airtable', 'Slack Pro')"
    • addedInput schema / properties / services / items / properties / vendor / maxLength
      Added value: +200
    • addedInput schema / properties / services / items / properties / vendor / minLength
      Added value: +1
  6. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description still adds substantial behavior: output shape (one line per service with vendor/plan/pay/seats/features/usage), per-service status semantics (eligible, needs_info, keep, no_recipe), how totals separate confirmed from modeled prices, and explicit data-handling/retention rules (never source code, secrets or raw invoices; account keys hashed; never IP addresses). This is unusually rich disclosure beyond 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.

Conciseness3/5

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

The trigger is correctly front-loaded, but the body collapses output format, status vocabulary, totals logic, sending constraints and a long data-retention/privacy clause into one dense block without structure. Much is valuable, yet the privacy paragraph is verbose and buries the operational guidance an agent needs.

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

Completeness4/5

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

For a complex, no-output-schema tool the description covers a lot: return format, statuses, totals semantics, and hard constraints on what may be sent. It is nearly complete, though a few inputs (limit_paths, decision values) are left entirely to the schema.

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

Parameters4/5

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

Schema coverage is only 60%, so the description must carry weight, and it does for the services array: it explains what a line contains, how project enables portfolio audits, and how a shared bill/account should be supplied. It does not explain limit_paths or restate the decision enum meanings, leaving some parameters to the schema.

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

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('stack checked as a whole') plus the concrete scopes it covers: several subscriptions, paid services in a codebase, or a portfolio of products, with example utterances. It distinguishes itself from start_audit ('If facts are missing, start_audit...'), but it does not clearly separate itself from choose_stack or find_alternatives, which a sibling-aware agent would also want.

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?

Gives clear when-to-use triggers ('audit what we pay for', 'what can we cut?') and routes the missing-facts case to start_audit. It never states when NOT to use it or contrasts explicitly with the other audit/comparison siblings, so it stops short of full when/when-not/alternatives guidance.

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.