Kong Reviews
Server Details
Pick a tech stack from a PRD and see what it costs now and at scale, after startup perks.
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 29 tools
Several clusters overlap heavily: recommend_stack, plan_stack, audit_stack, compare_architectures and extract_requirements all produce or feed stack recommendations, and get_pricing, estimate_cost, compare_vendors and find_cost_cliffs all answer 'what does vendor X cost'. The descriptions do explicitly route between them (recommend_stack says 'start here', plan_stack says 'use recommend_stack instead when you only have a plain-language description'), so an agent can resolve the conflict, but only by reading long guidance text. Boundaries like plan_stack vs project_stack and check_build vs get_build_pack remain fuzzier than ideal.
Every one of the 29 names is snake_case with a leading verb (list_, get_, check_, compare_, plan_, find_, delete_, update_), and nouns are reused consistently (stack, saved_stack, vendors, capabilities). No camelCase or vague one-word names anywhere.
29 tools is above the comfortable ceiling, and the surface is split by narrow variations rather than distinct capabilities (four pricing tools, four stack-recommendation tools, three saved-stack mutation tools). Several could be merged or folded into parameters, which would cut selection errors substantially.
Coverage is genuinely broad: catalogue discovery (list_vendors, search_directory, get_pricing), recommendation/planning, audit and drift detection, cost projection and cliffs, migration planning, build packs, saved-stack lifecycle, billing reconciliation and account deletion. Gaps are minor — there is no way to update or annotate catalogue data and no single-item lookup for showcase products, but agents can work around these via search_showcase and the share URLs.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
29 tool updates
- Changed
audit_stack3 fields changed- changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - changed
Input schema / properties / stack / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Added
check_build - Changed
check_fit14 fields changed- changed
Input schema / properties / per_1k_mau / descriptionPrevious value: -"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour."New value: +"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record." - added
Input schema / properties / per_1k_mau / properties / file_egress_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_readAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_storage_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_writeAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / job_runAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_recordAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_requestAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / smsAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_deliveredAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_storedAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_userAdded value: +{ + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
compare_architectures3 fields changed- changed
Input schema / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
compare_vendors15 fields changed- changed
Input schema / properties / category / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - changed
Input schema / properties / per_1k_mau / descriptionPrevious value: -"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour."New value: +"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record." - added
Input schema / properties / per_1k_mau / properties / file_egress_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_readAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_storage_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_writeAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / job_runAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_recordAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_requestAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / smsAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_deliveredAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_storedAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_userAdded value: +{ + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
delete_account1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
delete_saved_stack1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
detect_stack1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
diff_stack2 fields changed- changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
estimate_cost24 fields changed- changed
Input schema / properties / per_1k_mau / descriptionPrevious value: -"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour."New value: +"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record." - added
Input schema / properties / per_1k_mau / properties / file_egress_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_readAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_storage_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_writeAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / job_runAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_recordAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_requestAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / smsAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_deliveredAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_storedAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_userAdded value: +{ + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - changed
Input schema / properties / usage / descriptionPrevious value: -"Exact monthly usage by unit (mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour); overrides values derived from mau."New value: +"Exact monthly usage by unit (mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record); overrides values derived from mau." - added
Input schema / properties / usage / properties / file_egress_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / file_readAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / file_storage_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / file_writeAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / job_runAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / search_recordAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / search_requestAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / smsAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / video_min_deliveredAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / usage / properties / video_min_storedAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
evaluate_change16 fields changed- changed
Input schema / properties / category / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Input schema / properties / migration_featuresAdded value: +{ + "description": "Features of the current host the app uses (feature ids from plan_migration or detect_stack's netlify_features), so a migration playbook prices the work. Leave switching.hours out to use them.", + "items": { + "type": "string" + }, + "maxItems": 30, + "type": "array" +} - changed
Input schema / properties / per_1k_mau / descriptionPrevious value: -"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour."New value: +"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record." - added
Input schema / properties / per_1k_mau / properties / file_egress_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_readAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_storage_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_writeAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / job_runAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_recordAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_requestAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / smsAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_deliveredAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_storedAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_userAdded value: +{ + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
extract_requirements1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
find_cost_cliffs13 fields changed- changed
Input schema / properties / per_1k_mau / descriptionPrevious value: -"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour."New value: +"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record." - added
Input schema / properties / per_1k_mau / properties / file_egress_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_readAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_storage_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_writeAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / job_runAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_recordAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_requestAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / smsAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_deliveredAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_storedAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_userAdded value: +{ + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
find_perks1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Added
get_build_pack - Changed
get_pricing1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
get_saved_stack1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
list_capabilities1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
list_saved_stacks1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
list_vendors2 fields changed- changed
Input schema / properties / category / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Added
plan_migration - Changed
plan_stack21 fields changed- added
Input schema / properties / accountsAdded value: +{ + "additionalProperties": false, + "description": "For a business product counted in customers (\"50 clinics now, 500 next year\"): customers now and at the forecast, and people using it at each (default 10). Users are worked out from these when mau_now is not given.", + "properties": { + "forecast": { + "maximum": 10000000, + "minimum": 0, + "type": "number" + }, + "now": { + "maximum": 10000000, + "minimum": 0, + "type": "number" + }, + "users_per_account": { + "maximum": 100000, + "minimum": 1, + "type": "number" + } + }, + "type": "object" +} - added
Input schema / properties / build_toolAdded value: +{ + "description": "The build tool the user named, as a coding vendor id (lovable, bolt, replit, base44, v0, cursor, claude-code, github-copilot…): the plan uses it. An app builder that hosts the app and runs its database and sign-in (Lovable, Bolt, Replit, Base44) covers those, so they are not planned separately.", + "maxLength": 40, + "type": "string" +} - added
Input schema / properties / builder_profileAdded value: +{ + "description": "Who builds it. developer picks an AI coding agent, non_developer an app builder (and counts setup work double). Given without categories, the plan adds the build tool (coding).", + "enum": [ + "developer", + "non_developer", + "unknown" + ], + "type": "string" +} - changed
Input schema / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Input schema / properties / confirmedAdded value: +{ + "description": "Ids of questions whose assumption the user confirmed as right (e.g. [\"region\", \"builder\"]), so the plan stops asking them. A question answered with a figure goes in its own argument instead (per_user, revenue_per_mau_usd…).", + "items": { + "maxLength": 40, + "type": "string" + }, + "maxItems": 20, + "type": "array" +} - added
Input schema / properties / needsAdded value: +{ + "description": "Needs the plan should list even though they are not priced (directory category ids such as maps, vector_db, speech), from recommend_stack's requirements_read.needs.", + "items": { + "properties": { + "id": { + "maxLength": 40, + "type": "string" + }, + "label": { + "maxLength": 80, + "type": "string" + }, + "source": { + "maxLength": 500, + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" +} - changed
Input schema / properties / per_1k_mau / descriptionPrevious value: -"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour."New value: +"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record." - added
Input schema / properties / per_1k_mau / properties / file_egress_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_readAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_storage_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_writeAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / job_runAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_recordAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_requestAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / smsAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_deliveredAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_storedAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_userAdded value: +{ + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - added
Input schema / properties / rankingAdded value: +{ + "description": "balanced (default): monthly cost plus a small monthly weight for lock-in, setup work before first use and unverified seed prices, so a slightly cheaper vendor that is hard to leave or slow to set up can lose. cost: price alone. simplest: fewest vendors and least setup (one vendor covering several categories wins unless the others are much cheaper). Each plan lists the other two as alternatives when their picks differ.", + "enum": [ + "balanced", + "cost", + "simplest" + ], + "type": "string" +} - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
project_stack14 fields changed- changed
Input schema / properties / per_1k_mau / descriptionPrevious value: -"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour."New value: +"Override usage per 1,000 MAU. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record." - added
Input schema / properties / per_1k_mau / properties / file_egress_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_readAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_storage_gbAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / file_writeAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / job_runAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_recordAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / search_requestAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / smsAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_deliveredAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_1k_mau / properties / video_min_storedAdded value: +{ + "minimum": 0, + "type": "number" +} - added
Input schema / properties / per_userAdded value: +{ + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - changed
Input schema / properties / vendors / maxItemsPrevious value: -12New value: +20 - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
recommend_stack8 fields changed- added
Input schema / properties / build_toolAdded value: +{ + "description": "The build tool the user named, as a coding vendor id (lovable, bolt, replit, base44, v0, cursor, claude-code, github-copilot…): the plan uses it. An app builder that hosts the app and runs its database and sign-in (Lovable, Bolt, Replit, Base44) covers those, so they are not planned separately.", + "maxLength": 40, + "type": "string" +} - added
Input schema / properties / builder_profileAdded value: +{ + "description": "Who builds it. developer picks an AI coding agent, non_developer an app builder (and counts setup work double). Given without categories, the plan adds the build tool (coding).", + "enum": [ + "developer", + "non_developer", + "unknown" + ], + "type": "string" +} - changed
Input schema / properties / categories / descriptionPrevious value: -"Plan these categories. Default: what the description needs (a web app gets hosting, database, sign-in, email, payments and observability; an on-device app only what it names)."New value: +"Plan these categories. Default: a build tool (an AI app builder or coding agent) plus what the description needs (a web app gets hosting, database, sign-in, email, payments and observability; an on-device app only what it names; a one-sentence idea such as a pantry tracker what that kind of app usually needs)." - changed
Input schema / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store", - "coding" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding", + "storage", + "video", + "sms", + "push", + "jobs", + "search" +] - added
Input schema / properties / confirmedAdded value: +{ + "description": "Ids of questions whose assumption the user confirmed as right (e.g. [\"region\", \"builder\"]), so the plan stops asking them. A question answered with a figure goes in its own argument instead (per_user, revenue_per_mau_usd…).", + "items": { + "maxLength": 40, + "type": "string" + }, + "maxItems": 20, + "type": "array" +} - added
Input schema / properties / per_userAdded value: +{ + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - added
Input schema / properties / rankingAdded value: +{ + "description": "balanced (default): monthly cost plus a small monthly weight for lock-in, setup work before first use and unverified seed prices, so a slightly cheaper vendor that is hard to leave or slow to set up can lose. cost: price alone. simplest: fewest vendors and least setup (one vendor covering several categories wins unless the others are much cheaper). Each plan lists the other two as alternatives when their picks differ.", + "enum": [ + "balanced", + "cost", + "simplest" + ], + "type": "string" +} - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
record_bills1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
save_stack1 field changed- added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
search_directory2 fields changed- added
Input schema / properties / include_closedAdded value: +{ + "description": "true: include services that have shut down (left out by default; an exact id always finds one).", + "type": "boolean" +} - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
search_showcase2 fields changed- changed
Input schema / properties / category / enumPrevious value: -[ - "ai", - "productivity", - "developer_tools", - "finance", - "health", - "education", - "commerce", - "social", - "design", - "media", - "travel", - "marketing", - "other" -]New value: +[ + "ai", + "commerce", + "customer_support", + "data_analytics", + "design", + "developer_tools", + "education", + "energy", + "finance", + "government", + "hardware", + "health", + "hr", + "industrial", + "legal", + "marketing", + "media", + "productivity", + "sales", + "security", + "social", + "travel", + "other" +] - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
- Changed
update_saved_stack5 fields changed- added
Input schema / properties / answersAdded value: +{ + "additionalProperties": false, + "description": "Answers to the plan's questions (from get_saved_stack), kept with the stack so a re-plan doesn't ask again. Plans only. Re-prices the stack.", + "properties": { + "builder_profile": { + "enum": [ + "developer", + "non_developer" + ], + "type": "string" + }, + "confirmed": { + "description": "Question ids whose assumption is right, e.g. [\"region\", \"builder\"].", + "items": { + "maxLength": 40, + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + "data_in_eu": { + "description": "true: user data has to stay in the EU. false: no region requirement.", + "type": "boolean" + }, + "per_user": { + "additionalProperties": false, + "description": "Usage per active user a month, e.g. {\"sms\": 2, \"file_storage_gb\": 0.2, \"ai_input_ktok\": 30}. Replaces the profile and the filled-in defaults for those units; a plan's questions say which unit each answer sets. Units: mau, seat, request_million, bandwidth_gb, db_storage_gb, egress_gb, email, event, error_event, compute_hour, revenue_usd, transaction, ai_input_ktok, ai_output_ktok, kv_read, kv_write, ci_hour, file_storage_gb, file_egress_gb, file_write, file_read, video_min_stored, video_min_delivered, sms, job_run, search_request, search_record.", + "properties": { + "ai_input_ktok": { + "minimum": 0, + "type": "number" + }, + "ai_output_ktok": { + "minimum": 0, + "type": "number" + }, + "bandwidth_gb": { + "minimum": 0, + "type": "number" + }, + "ci_hour": { + "minimum": 0, + "type": "number" + }, + "compute_hour": { + "minimum": 0, + "type": "number" + }, + "db_storage_gb": { + "minimum": 0, + "type": "number" + }, + "egress_gb": { + "minimum": 0, + "type": "number" + }, + "email": { + "minimum": 0, + "type": "number" + }, + "error_event": { + "minimum": 0, + "type": "number" + }, + "event": { + "minimum": 0, + "type": "number" + }, + "file_egress_gb": { + "minimum": 0, + "type": "number" + }, + "file_read": { + "minimum": 0, + "type": "number" + }, + "file_storage_gb": { + "minimum": 0, + "type": "number" + }, + "file_write": { + "minimum": 0, + "type": "number" + }, + "job_run": { + "minimum": 0, + "type": "number" + }, + "kv_read": { + "minimum": 0, + "type": "number" + }, + "kv_write": { + "minimum": 0, + "type": "number" + }, + "mau": { + "minimum": 0, + "type": "number" + }, + "request_million": { + "minimum": 0, + "type": "number" + }, + "revenue_usd": { + "minimum": 0, + "type": "number" + }, + "search_record": { + "minimum": 0, + "type": "number" + }, + "search_request": { + "minimum": 0, + "type": "number" + }, + "seat": { + "minimum": 0, + "type": "number" + }, + "sms": { + "minimum": 0, + "type": "number" + }, + "transaction": { + "minimum": 0, + "type": "number" + }, + "video_min_delivered": { + "minimum": 0, + "type": "number" + }, + "video_min_stored": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "revenue_per_mau_usd": { + "minimum": 0, + "type": "number" + }, + "transactions_per_mau": { + "minimum": 0, + "type": "number" + }, + "users_per_account": { + "description": "People who use it at each business customer.", + "maximum": 100000, + "minimum": 1, + "type": "number" + } + }, + "type": "object" +} - added
Input schema / properties / build_progressAdded value: +{ + "additionalProperties": false, + "description": "Tick build-pack steps done (true) or not done (false), by step id from get_build_pack: domain or the step's category (hosting, database, auth…). Plans only.", + "properties": { + "ai": { + "type": "boolean" + }, + "app_store": { + "type": "boolean" + }, + "auth": { + "type": "boolean" + }, + "coding": { + "type": "boolean" + }, + "database": { + "type": "boolean" + }, + "domain": { + "type": "boolean" + }, + "edge": { + "type": "boolean" + }, + "email": { + "type": "boolean" + }, + "hosting": { + "type": "boolean" + }, + "jobs": { + "type": "boolean" + }, + "observability": { + "type": "boolean" + }, + "payments": { + "type": "boolean" + }, + "push": { + "type": "boolean" + }, + "search": { + "type": "boolean" + }, + "sms": { + "type": "boolean" + }, + "storage": { + "type": "boolean" + }, + "video": { + "type": "boolean" + } + }, + "type": "object" +} - added
Input schema / properties / migration_progressAdded value: +{ + "additionalProperties": true, + "description": "Tick a host move's features and cutover steps done (true) or not done (false), by id from plan_migration (e.g. forms, redirects, lower-ttl, switch). Audits only.", + "type": "object" +} - added
Input schema / properties / unlink_repoAdded value: +{ + "description": "Forget the repo linked with check_build, and its last check.", + "type": "boolean" +} - added
Output schema / properties / disclosures / descriptionAdded value: +"Always includes the neutrality note: no vendor pays for a place in the answer. Link its url when you mention how Kong Reviews is paid."
1 tool update
- Changed
search_directory1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Words to match, e.g. \"sms\", \"vector\", \"merchant of record\", \"Supabase\"."New value: +"Words to match, e.g. \"sms\", \"vector\", \"merchant of record\", \"Supabase\", or a company such as \"Amazon\" for all its services."
1 tool update
- Changed
record_bills2 fields changed- added
Input schema / properties / id / descriptionAdded value: +"The saved stack or audit. Leave out to keep the bills on the account." - removed
Input schema / requiredRemoved value: -[ - "id" -]
2 tool updates
- Added
compare_architectures - Changed
plan_stack3 fields changed- added
Input schema / properties / answersAdded value: +{ + "additionalProperties": false, + "description": "Interview answers by question id, each an option id from compare_architectures, e.g. {\"server\":\"dynamic\",\"logins\":\"consumers\",\"threat\":\"public\",\"ops\":\"managed\"}.", + "properties": { + "background": { + "enum": [ + "none", + "jobs", + "realtime" + ], + "type": "string" + }, + "data": { + "enum": [ + "little", + "lots" + ], + "type": "string" + }, + "logins": { + "enum": [ + "none", + "consumers", + "teams", + "enterprise" + ], + "type": "string" + }, + "media": { + "enum": [ + "none", + "images", + "video" + ], + "type": "string" + }, + "ops": { + "enum": [ + "managed", + "some", + "admin" + ], + "type": "string" + }, + "sensitivity": { + "enum": [ + "low", + "eu", + "business", + "health" + ], + "type": "string" + }, + "server": { + "enum": [ + "static", + "mixed", + "dynamic", + "none", + "proxy", + "full" + ], + "type": "string" + }, + "threat": { + "enum": [ + "low", + "public", + "target" + ], + "type": "string" + }, + "uptime": { + "enum": [ + "fine", + "costly", + "critical" + ], + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / architectureAdded value: +{ + "description": "Plan with only this architecture's vendors, from compare_architectures (e.g. serverless_nextjs, cloudflare_edge, vps_cloudflare).", + "enum": [ + "static_cdn", + "frontend_baas", + "serverless_nextjs", + "cloudflare_edge", + "managed_containers", + "single_vps", + "vps_cloudflare", + "firebase", + "on_device" + ], + "type": "string" +} - added
Input schema / properties / platformsAdded value: +{ + "description": "Where the app runs; with architecture, a phone-only app leaves out web hosting.", + "items": { + "enum": [ + "web", + "ios", + "android", + "desktop" + ], + "type": "string" + }, + "type": "array" +}
1 tool update
- Changed
record_bills2 fields changed- added
Input schema / properties / invoice_textAdded value: +{ + "description": "One invoice's text, copied from the PDF or the email.", + "maxLength": 60000, + "type": "string" +} - added
Input schema / properties / previewAdded value: +{ + "description": "With invoice_text: read it and show what was found, without saving.", + "type": "boolean" +}
5 tool updates
- Added
diff_stack - Changed
get_saved_stack1 field changed- added
Input schema / properties / bills_monthAdded value: +{ + "description": "Month (YYYY-MM) for the bills comparison; default the newest with bills.", + "maxLength": 20, + "type": "string" +}
- Added
record_bills - Changed
save_stack1 field changed- changed
Input schema / properties / share_url / descriptionPrevious value: -"share_url returned by recommend_stack or plan_stack."New value: +"share_url returned by recommend_stack, plan_stack or audit_stack."
- Added
update_saved_stack
1 tool update
- Changed
search_showcase3 fields changed- changed
Input schema / properties / category / enumPrevious value: -[ - "ai", - "productivity", - "developer_tools", - "finance", - "health", - "education", - "commerce", - "social", - "design", - "travel", - "marketing", - "other" -]New value: +[ + "ai", + "productivity", + "developer_tools", + "finance", + "health", + "education", + "commerce", + "social", + "design", + "media", + "travel", + "marketing", + "other" +] - added
Input schema / properties / sort / descriptionAdded value: +"stars: most GitHub stars first." - changed
Input schema / properties / sort / enumPrevious value: -[ - "featured", - "newest", - "name" -]New value: +[ + "featured", + "newest", + "name", + "stars" +]
11 tool updates
- Changed
audit_stack2 fields changed- changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +] - changed
Input schema / properties / stack / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +]
- Changed
check_fit2 fields changed- changed
Input schema / properties / profile_id / descriptionPrevious value: -"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site."New value: +"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site, ios_on_device. Defaults to the app type's profile." - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +]
- Changed
compare_vendors3 fields changed- changed
Input schema / properties / category / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +] - changed
Input schema / properties / profile_id / descriptionPrevious value: -"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site."New value: +"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site, ios_on_device. Defaults to the app type's profile." - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +]
- Changed
estimate_cost1 field changed- changed
Input schema / properties / profile_id / descriptionPrevious value: -"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site."New value: +"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site, ios_on_device. Defaults to the app type's profile."
- Changed
evaluate_change3 fields changed- changed
Input schema / properties / category / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +] - changed
Input schema / properties / profile_id / descriptionPrevious value: -"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site."New value: +"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site, ios_on_device. Defaults to the app type's profile." - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +]
- Changed
find_cost_cliffs1 field changed- changed
Input schema / properties / profile_id / descriptionPrevious value: -"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site."New value: +"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site, ios_on_device. Defaults to the app type's profile."
- Changed
list_vendors1 field changed- changed
Input schema / properties / category / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +]
- Changed
plan_stack6 fields changed- added
Input schema / properties / app_typeAdded value: +{ + "description": "Kind of app, from Product Hunt's categories: productivity, engineering_development, design_creative, finance, marketing_sales, data_analysis, platforms, no_code, product_addons, llms, ai_agents, voice_ai, social_community, health_fitness, family, lifestyle, web3, ecommerce, travel, physical_products, booking_marketplace, content_site, ios_on_device. Sets the usage profile and, when users are not given, typical users at launch and after the forecast period.", + "type": "string" +} - changed
Input schema / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +] - added
Input schema / properties / mau_now / descriptionAdded value: +"Monthly active users now. Without it, a new product of the app type at launch." - changed
Input schema / properties / profile_id / descriptionPrevious value: -"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site."New value: +"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site, ios_on_device. Defaults to the app type's profile." - changed
Input schema / properties / requirements / items / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +] - removed
Input schema / requiredRemoved value: -[ - "mau_now" -]
- Changed
project_stack1 field changed- changed
Input schema / properties / profile_id / descriptionPrevious value: -"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site."New value: +"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site, ios_on_device. Defaults to the app type's profile."
- Changed
recommend_stack3 fields changed- added
Input schema / properties / app_typeAdded value: +{ + "description": "Kind of app, from Product Hunt's categories: productivity, engineering_development, design_creative, finance, marketing_sales, data_analysis, platforms, no_code, product_addons, llms, ai_agents, voice_ai, social_community, health_fitness, family, lifestyle, web3, ecommerce, travel, physical_products, booking_marketplace, content_site, ios_on_device. Sets the usage profile and, when users are not given, typical users at launch and after the forecast period.", + "type": "string" +} - changed
Input schema / properties / categories / items / enumPrevious value: -[ - "hosting", - "database", - "auth", - "email", - "payments", - "observability", - "ai", - "edge", - "app_store" -]New value: +[ + "hosting", + "database", + "auth", + "email", + "payments", + "observability", + "ai", + "edge", + "app_store", + "coding" +] - changed
Input schema / properties / profile_id / descriptionPrevious value: -"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site."New value: +"Usage profile: b2b_saas (default), consumer_app, booking_marketplace, content_site, ios_on_device. Defaults to the app type's profile."
- Added
search_showcase
1 tool update
- Added
search_directory
2 tool updates
- Added
audit_stack - Added
detect_stack
18 tool updates
- First observed
check_fit - First observed
compare_vendors - First observed
delete_account - First observed
delete_saved_stack - First observed
estimate_cost - First observed
evaluate_change - First observed
extract_requirements - First observed
find_cost_cliffs - First observed
find_perks - First observed
get_pricing - First observed
get_saved_stack - First observed
list_capabilities - First observed
list_saved_stacks - First observed
list_vendors - First observed
plan_stack - First observed
project_stack - First observed
recommend_stack - First observed
save_stack
Related MCP Connectors
Estimate development costs and hours, scope an MVP, and write a PRD with user stories and specs.
Cloud, SaaS and AI spend in one system of record. Each saving applied for you or shipped as code.
Designs, prices, and deploys AWS/GCP cloud infrastructure from plain-English requirements.
Simulate cloud infrastructure and estimate cost before deploying or changing infrastructure.
Related MCP Servers
AlicenseNot gradedqualityAmaintenanceEnables AI assistants to fetch live, dated prices for LLM models and cloud compute instances across providers, compare and recommend models, and estimate monthly costs based on workload-specific token shapes and constraints.MIT- FlicenseAqualityBmaintenanceParametric price benchmarking for engineering and procurement trade-offs. Agentic first, runs on your data, stays on your machine.1228 PyPI2-
- AlicenseBqualityDmaintenancePredict the cost of an LLM call before you make it, and pick the cheapest model that still does the job, offline, from your editor.754 npmApache 2.0
- AlicenseAqualityAmaintenanceSearch and compare free tiers, credits, and pricing changes across 1,500+ developer tools. 8 MCP tools for infrastructure decisions, cost estimation, and vendor comparison.44 npm24MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.