Skip to main content
Glama

Choose the most cost-effective stack

choose_stack
Read-onlyIdempotent

Use when the user is picking vendors for something they're building: 'cheapest database for 20k users', 'Resend or Postmark at 60,000 emails a month?', 'what will auth cost at 10k MAU?'. Give each job with its volumes and must-have features; every tier of every indexed vendor is priced at those volumes and the cheapest valid tier wins. A pick 'fits' only when every volume is within published caps or priced overage, no published limit is broken, each must-have is included in that plan or priced as its add-on, and the price was checked within 120 days; anything else comes back as a check or a question. total keeps proven, estimated and unpriced jobs apart. Pass scales (MAU) for cost curves and break-evens; with no MAU elsewhere, the smallest scale is the MAU priced. budget_monthly_usd tests a budget. For a whole product brief, use plan_stack_from_spec. 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): don't send personal data or secrets.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
needsYes
preferNomanaged leaves out self-hosted optionscheapest
scalesNoPrice the stack at several scales, e.g. [1000, 20000, 200000] MAU (scale_by mau) or [1, 10, 100] (scale_by multiplier): per-job cost curve, tier changes and break-even points between options
projectNoWhat is being built. Volumes written here ('1,200,000 preview images/mo', '20k MAU') are used and echoed as assumptions. Say 'personal' or 'hobby' if it is non-commercial; otherwise plans that forbid commercial use (e.g. Vercel Hobby) are blocked.
scale_byNomau: scales are monthly active users (per_user volumes × MAU; other monthly volumes and sizes grow in proportion to the MAU they were given at); multiplier: every monthly volume and size is multipliedmau
limit_per_jobNo
unit_economicsNoRevenue model for gross margin per scale: price_usd with conversion_rate, or revenue_per_mau
budget_monthly_usdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / budget_monthly_usd / maximum
      Added value: +1000000000000
    • addedInput schema / properties / needs / items / properties / peak_volume
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Peak or burst requirement (1.6.0), e.g. {amount: 1500, unit: 'emails_per_day'} for a launch day. Checked against a tier's published daily cap where the index has one; otherwise it stays an open check (the index doesn't prove burst or rate limits), so no option is a plain fit",
      +  "properties": {
      +    "amount": {
      +      "maximum": 1000000000000,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "unit": {
      +      "enum": [
      +        "emails_per_day",
      +        "requests_per_day",
      +        "requests_per_second"
      +      ],
      +      "maxLength": 2000,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "amount",
      +    "unit"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / needs / items / properties / per_user / items / properties / unit / maxLength
      Added value: +2000
    • addedInput schema / properties / needs / items / properties / volume / properties / unit / maxLength
      Added value: +2000
    • addedInput schema / properties / needs / items / properties / volumes / items / properties / unit / maxLength
      Added value: +2000
    • addedInput schema / properties / prefer / maxLength
      Added value: +2000
    • addedInput schema / properties / scale_by / maxLength
      Added value: +2000
    • addedInput schema / properties / unit_economics / properties / billing / maxLength
      Added value: +2000
  2. Changed3 schema fields changed
    • changedInput schema / properties / needs / items / properties / per_user / items / properties / unit / enum
      Previous value: -[
      -  "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",
      -  "tokens",
      -  "tokens_in",
      -  "tokens_out",
      -  "cached_tokens",
      -  "images",
      -  "video_minutes_delivered",
      -  "gb_stored",
      -  "gb_egress",
      -  "transactions",
      -  "gmv_usd",
      -  "sandbox_seconds",
      -  "sandbox_hours",
      -  "vm_hours",
      -  "vcpu_hours",
      -  "browser_hours",
      -  "proxy_gb",
      -  "job_executions",
      -  "verifications",
      -  "inbound_emails",
      -  "emails",
      -  "events",
      -  "errors",
      -  "exceptions",
      -  "requests",
      -  "pageviews",
      -  "searches",
      -  "payouts",
      -  "credits_usd",
      -  "stream_hours",
      -  "audio_minutes",
      -  "characters",
      -  "payout_volume_usd",
      -  "disputes",
      -  "object_writes",
      -  "object_reads"
      -]New value: +[
      +  "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",
      +  "tokens",
      +  "tokens_in",
      +  "tokens_out",
      +  "cached_tokens",
      +  "images",
      +  "video_minutes_delivered",
      +  "gb_stored",
      +  "gb_egress",
      +  "transactions",
      +  "gmv_usd",
      +  "sandbox_seconds",
      +  "sandbox_hours",
      +  "vm_hours",
      +  "vcpu_hours",
      +  "browser_hours",
      +  "proxy_gb",
      +  "job_executions",
      +  "verifications",
      +  "inbound_emails",
      +  "emails",
      +  "events",
      +  "errors",
      +  "exceptions",
      +  "requests",
      +  "pageviews",
      +  "searches",
      +  "payouts",
      +  "credits_usd",
      +  "stream_hours",
      +  "audio_minutes",
      +  "characters",
      +  "payout_volume_usd",
      +  "disputes",
      +  "object_writes",
      +  "object_reads",
      +  "sms",
      +  "vectors",
      +  "vector_queries",
      +  "cache_commands",
      +  "gpu_seconds",
      +  "gpu_hours",
      +  "revenue_usd",
      +  "phone_minutes"
      +]
    • changedInput schema / properties / needs / items / properties / volume / properties / unit / enum
      Previous value: -[
      -  "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",
      -  "tokens",
      -  "tokens_in",
      -  "tokens_out",
      -  "cached_tokens",
      -  "images",
      -  "video_minutes_delivered",
      -  "gb_stored",
      -  "gb_egress",
      -  "transactions",
      -  "gmv_usd",
      -  "sandbox_seconds",
      -  "sandbox_hours",
      -  "vm_hours",
      -  "vcpu_hours",
      -  "browser_hours",
      -  "proxy_gb",
      -  "job_executions",
      -  "verifications",
      -  "inbound_emails",
      -  "emails",
      -  "events",
      -  "errors",
      -  "exceptions",
      -  "requests",
      -  "pageviews",
      -  "searches",
      -  "payouts",
      -  "credits_usd",
      -  "stream_hours",
      -  "audio_minutes",
      -  "characters",
      -  "payout_volume_usd",
      -  "disputes",
      -  "object_writes",
      -  "object_reads"
      -]New value: +[
      +  "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",
      +  "tokens",
      +  "tokens_in",
      +  "tokens_out",
      +  "cached_tokens",
      +  "images",
      +  "video_minutes_delivered",
      +  "gb_stored",
      +  "gb_egress",
      +  "transactions",
      +  "gmv_usd",
      +  "sandbox_seconds",
      +  "sandbox_hours",
      +  "vm_hours",
      +  "vcpu_hours",
      +  "browser_hours",
      +  "proxy_gb",
      +  "job_executions",
      +  "verifications",
      +  "inbound_emails",
      +  "emails",
      +  "events",
      +  "errors",
      +  "exceptions",
      +  "requests",
      +  "pageviews",
      +  "searches",
      +  "payouts",
      +  "credits_usd",
      +  "stream_hours",
      +  "audio_minutes",
      +  "characters",
      +  "payout_volume_usd",
      +  "disputes",
      +  "object_writes",
      +  "object_reads",
      +  "sms",
      +  "vectors",
      +  "vector_queries",
      +  "cache_commands",
      +  "gpu_seconds",
      +  "gpu_hours",
      +  "revenue_usd",
      +  "phone_minutes"
      +]
    • changedInput schema / properties / needs / items / properties / volumes / items / properties / unit / enum
      Previous value: -[
      -  "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",
      -  "tokens",
      -  "tokens_in",
      -  "tokens_out",
      -  "cached_tokens",
      -  "images",
      -  "video_minutes_delivered",
      -  "gb_stored",
      -  "gb_egress",
      -  "transactions",
      -  "gmv_usd",
      -  "sandbox_seconds",
      -  "sandbox_hours",
      -  "vm_hours",
      -  "vcpu_hours",
      -  "browser_hours",
      -  "proxy_gb",
      -  "job_executions",
      -  "verifications",
      -  "inbound_emails",
      -  "emails",
      -  "events",
      -  "errors",
      -  "exceptions",
      -  "requests",
      -  "pageviews",
      -  "searches",
      -  "payouts",
      -  "credits_usd",
      -  "stream_hours",
      -  "audio_minutes",
      -  "characters",
      -  "payout_volume_usd",
      -  "disputes",
      -  "object_writes",
      -  "object_reads"
      -]New value: +[
      +  "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",
      +  "tokens",
      +  "tokens_in",
      +  "tokens_out",
      +  "cached_tokens",
      +  "images",
      +  "video_minutes_delivered",
      +  "gb_stored",
      +  "gb_egress",
      +  "transactions",
      +  "gmv_usd",
      +  "sandbox_seconds",
      +  "sandbox_hours",
      +  "vm_hours",
      +  "vcpu_hours",
      +  "browser_hours",
      +  "proxy_gb",
      +  "job_executions",
      +  "verifications",
      +  "inbound_emails",
      +  "emails",
      +  "events",
      +  "errors",
      +  "exceptions",
      +  "requests",
      +  "pageviews",
      +  "searches",
      +  "payouts",
      +  "credits_usd",
      +  "stream_hours",
      +  "audio_minutes",
      +  "characters",
      +  "payout_volume_usd",
      +  "disputes",
      +  "object_writes",
      +  "object_reads",
      +  "sms",
      +  "vectors",
      +  "vector_queries",
      +  "cache_commands",
      +  "gpu_seconds",
      +  "gpu_hours",
      +  "revenue_usd",
      +  "phone_minutes"
      +]
  3. Changed20 schema fields changed
    • addedInput schema / properties / needs / items / properties / avg_amount_usd
      Added value: +{
      +  "description": "Average payment in USD; with transactions it prices payment fees",
      +  "maximum": 10000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / needs / items / properties / features / description
      Previous value: -"Must-have features, e.g. ['Postgres database', 'Auth']"New value: +"Must-haves, e.g. ['Custom domain', 'CAPTCHA solving', 'platform holds funds', 'refunds enabled', 'unbounded sessions', '2 vCPU / 4 GiB', 'gpt-6-sol']. Sizes and counts ('30 GB database') are checked as volumes; a model or plan name pins that model; SSO, SOC 2, audit logs and region needs are listed as unverified requirements"
    • addedInput schema / properties / needs / items / properties / features / items / maxLength
      Added value: +200
    • addedInput schema / properties / needs / items / properties / features / items / minLength
      Added value: +1
    • addedInput schema / properties / needs / items / properties / features / maxItems
      Added value: +20
    • changedInput schema / properties / needs / items / properties / job / description
      Previous value: -"A category id from list_stack_jobs (e.g. database, auth, hosting, email_transactional) or plain words ('send email', 'postgres')"New value: +"A job id from list_stack_jobs (llm_inference, image_generation_api, video_delivery, object_storage, sandbox_compute, browser_automation, job_queue, auth_b2b, email_inbound, identity_verification, marketplace_payouts, database, auth, hosting, email_transactional, …) or plain words ('send email', 'video hosting (HLS)', 'KYC'). Unknown or ambiguous jobs come back in unsupported_jobs, never as an error"
    • addedInput schema / properties / needs / items / properties / job / maxLength
      Added value: +200
    • addedInput schema / properties / needs / items / properties / job / minLength
      Added value: +1
    • addedInput schema / properties / needs / items / properties / per_user
      Added value: +{
      +  "description": "Volumes per monthly active user per month, e.g. [{amount: 6, unit: 'images'}]; multiplied by MAU (from scales, a mau volume or the project text)",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amount": {
      +        "maximum": 1000000000000000,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "unit": {
      +        "description": "A units.json unit, or an alias: tokens_in, tokens_out, images, gb_stored, gb_egress, transactions, gmv_usd, sandbox_seconds, sandbox_hours, vcpu_hours, browser_hours, job_executions, verifications, inbound_emails, video_minutes_delivered, sso_connections, sso_users, emails, events, requests, credits_usd, MAU (= mau). *_per_month units are monthly, *_per_day daily, *_gb and video_minutes_stored are totals.",
      +        "enum": [
      +          "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",
      +          "tokens",
      +          "tokens_in",
      +          "tokens_out",
      +          "cached_tokens",
      +          "images",
      +          "video_minutes_delivered",
      +          "gb_stored",
      +          "gb_egress",
      +          "transactions",
      +          "gmv_usd",
      +          "sandbox_seconds",
      +          "sandbox_hours",
      +          "vm_hours",
      +          "vcpu_hours",
      +          "browser_hours",
      +          "proxy_gb",
      +          "job_executions",
      +          "verifications",
      +          "inbound_emails",
      +          "emails",
      +          "events",
      +          "errors",
      +          "exceptions",
      +          "requests",
      +          "pageviews",
      +          "searches",
      +          "payouts",
      +          "credits_usd",
      +          "stream_hours",
      +          "audio_minutes",
      +          "characters",
      +          "payout_volume_usd",
      +          "disputes",
      +          "object_writes",
      +          "object_reads"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "amount",
      +      "unit"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 8,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / needs / items / properties / sandbox_size
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Sandbox size for sandbox_compute",
      +  "properties": {
      +    "ram_gib": {
      +      "maximum": 4096,
      +      "minimum": 0.1,
      +      "type": "number"
      +    },
      +    "vcpu": {
      +      "maximum": 512,
      +      "minimum": 0.1,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / needs / items / properties / volume / properties / amount / maximum
      Added value: +1000000000000000
    • addedInput schema / properties / needs / items / properties / volume / properties / unit / description
      Added value: +"A units.json unit, or an alias: tokens_in, tokens_out, images, gb_stored, gb_egress, transactions, gmv_usd, sandbox_seconds, sandbox_hours, vcpu_hours, browser_hours, job_executions, verifications, inbound_emails, video_minutes_delivered, sso_connections, sso_users, emails, events, requests, credits_usd, MAU (= mau). *_per_month units are monthly, *_per_day daily, *_gb and video_minutes_stored are totals."
    • changedInput schema / properties / needs / items / properties / volume / properties / unit / enum
      Previous value: -[
      -  "MAU",
      -  "emails_per_month",
      -  "events_per_month",
      -  "requests_per_month",
      -  "seats"
      -]New value: +[
      +  "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",
      +  "tokens",
      +  "tokens_in",
      +  "tokens_out",
      +  "cached_tokens",
      +  "images",
      +  "video_minutes_delivered",
      +  "gb_stored",
      +  "gb_egress",
      +  "transactions",
      +  "gmv_usd",
      +  "sandbox_seconds",
      +  "sandbox_hours",
      +  "vm_hours",
      +  "vcpu_hours",
      +  "browser_hours",
      +  "proxy_gb",
      +  "job_executions",
      +  "verifications",
      +  "inbound_emails",
      +  "emails",
      +  "events",
      +  "errors",
      +  "exceptions",
      +  "requests",
      +  "pageviews",
      +  "searches",
      +  "payouts",
      +  "credits_usd",
      +  "stream_hours",
      +  "audio_minutes",
      +  "characters",
      +  "payout_volume_usd",
      +  "disputes",
      +  "object_writes",
      +  "object_reads"
      +]
    • addedInput schema / properties / needs / items / properties / volumes
      Added value: +{
      +  "description": "Several dimensions at once, e.g. [{amount: 15000000, unit: 'tokens_in'}, {amount: 7500000, unit: 'tokens_out'}]",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amount": {
      +        "maximum": 1000000000000000,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "unit": {
      +        "description": "A units.json unit, or an alias: tokens_in, tokens_out, images, gb_stored, gb_egress, transactions, gmv_usd, sandbox_seconds, sandbox_hours, vcpu_hours, browser_hours, job_executions, verifications, inbound_emails, video_minutes_delivered, sso_connections, sso_users, emails, events, requests, credits_usd, MAU (= mau). *_per_month units are monthly, *_per_day daily, *_gb and video_minutes_stored are totals.",
      +        "enum": [
      +          "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",
      +          "tokens",
      +          "tokens_in",
      +          "tokens_out",
      +          "cached_tokens",
      +          "images",
      +          "video_minutes_delivered",
      +          "gb_stored",
      +          "gb_egress",
      +          "transactions",
      +          "gmv_usd",
      +          "sandbox_seconds",
      +          "sandbox_hours",
      +          "vm_hours",
      +          "vcpu_hours",
      +          "browser_hours",
      +          "proxy_gb",
      +          "job_executions",
      +          "verifications",
      +          "inbound_emails",
      +          "emails",
      +          "events",
      +          "errors",
      +          "exceptions",
      +          "requests",
      +          "pageviews",
      +          "searches",
      +          "payouts",
      +          "credits_usd",
      +          "stream_hours",
      +          "audio_minutes",
      +          "characters",
      +          "payout_volume_usd",
      +          "disputes",
      +          "object_writes",
      +          "object_reads"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "amount",
      +      "unit"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 8,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / prefer / description
      Added value: +"managed leaves out self-hosted options"
    • changedInput schema / properties / project / description
      Previous value: -"What is being built, one line"New value: +"What is being built. Volumes written here ('1,200,000 preview images/mo', '20k MAU') are used and echoed as assumptions. Say 'personal' or 'hobby' if it is non-commercial; otherwise plans that forbid commercial use (e.g. Vercel Hobby) are blocked."
    • addedInput schema / properties / project / maxLength
      Added value: +4000
    • addedInput schema / properties / scale_by
      Added value: +{
      +  "default": "mau",
      +  "description": "mau: scales are monthly active users (per_user volumes × MAU; other monthly volumes and sizes grow in proportion to the MAU they were given at); multiplier: every monthly volume and size is multiplied",
      +  "enum": [
      +    "mau",
      +    "multiplier"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / scales
      Added value: +{
      +  "description": "Price the stack at several scales, e.g. [1000, 20000, 200000] MAU (scale_by mau) or [1, 10, 100] (scale_by multiplier): per-job cost curve, tier changes and break-even points between options",
      +  "items": {
      +    "maximum": 1000000000,
      +    "minimum": 0.001,
      +    "type": "number"
      +  },
      +  "maxItems": 6,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / unit_economics
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Revenue model for gross margin per scale: price_usd with conversion_rate, or revenue_per_mau",
      +  "properties": {
      +    "billing": {
      +      "default": "monthly",
      +      "description": "one_time: price_usd per purchase, conversion_rate = purchases per MAU per month",
      +      "enum": [
      +        "monthly",
      +        "one_time"
      +      ],
      +      "type": "string"
      +    },
      +    "conversion_rate": {
      +      "description": "Share of MAU who pay, e.g. 0.03",
      +      "maximum": 1,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "price_usd": {
      +      "description": "What a paying user pays",
      +      "maximum": 1000000,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "revenue_per_mau": {
      +      "description": "Average monthly revenue per MAU (instead of price_usd × conversion_rate)",
      +      "maximum": 10000,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "variable_cost_alert_pct": {
      +      "default": 20,
      +      "description": "Flag jobs whose monthly cost is above this % of revenue",
      +      "maximum": 100,
      +      "minimum": 1,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context beyond this: data-retention practices (which arguments are stored, one-way hashing of account keys, never IP addresses), the 'total keeps proven, estimated and unpriced jobs apart' output semantics, the fit criteria, and the 120-day price-check rule. This is rich, non-redundant disclosure.

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

Conciseness4/5

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

The description is dense and front-loaded with the usage trigger and examples before diving into mechanics. It is long, and the privacy sentence at the end is verbose, but nearly every sentence carries load-bearing information (fit rules, scale semantics, storage policy, sibling routing). It would earn a 5 with tighter paragraphing.

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 tool with 8 parameters, nested objects, and no output schema, the description covers the critical ground: when to invoke, fit verification, scale/budget behavior, data privacy, and alternative tools. It does not describe the returned structure (the 'total' categories are mentioned but not fully specified), and features/per_user semantics are left to the schema, which is acceptable.

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 63%, so the description must partially compensate, and it does: it explains that scales are MAU for cost curves and break-evens, that the smallest scale becomes the priced MAU when no MAU appears elsewhere, and that budget_monthly_usd tests a budget. It does not mention limit_per_job, but the schema already documents most other parameters well and the added semantics target the trickiest params.

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

Purpose5/5

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

The description opens with a specific verb-resource pairing ('picking vendors for something they're building') and grounds it with concrete examples ('cheapest database for 20k users', 'Resend or Postmark at 60,000 emails a month?'). It also explicitly names the closest sibling (plan_stack_from_spec) and what that sibling is for, so an agent can distinguish them without opening schemas.

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

Usage Guidelines5/5

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

It states exactly when to use the tool ('when the user is picking vendors') and routes the whole-product-brief case to plan_stack_from_spec. It also explains the fit verification semantics (published caps, must-haves, 120-day price freshness) and how uncertain cases are handled ('comes back as a check or a question'), leaving no ambiguity about when a result is a firm recommendation.

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.