ChatStack - App Cost Estimator
Server Details
Estimate development costs and hours, scope an MVP, and write a PRD with user stories and specs.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
The lifecycle tools are mostly distinct, but send_turn and send_action both submit user input and can advance the flow. The descriptions require lengthy rules to separate action payloads, free text, mode selection, and milestone advancement, so misselection remains likely.
All tool names follow a consistent snake_case verb-first pattern: get_estimate_status, send_action, send_turn, start_session, submit_prd. The shared send_ prefix slightly blurs two tools semantically, but the naming convention itself is predictable.
Five tools is well-scoped for a guided estimation workflow. Each tool appears to represent a necessary lifecycle step: starting, checking status, sending input, submitting, and handling gated actions.
The surface covers the full guided flow from start through status checks, iterative interaction, PRD submission, and post-submit links. Minor gaps exist around explicit cancel/reset or standalone retrieval of a submitted PRD, but the core lifecycle is covered.
Available Tools
5 toolsget_estimate_statusGet app estimate progressARead-onlyInspect
Read the current app cost estimate without advancing it. Returns flow_stage, pending_gate, and pending_gate_payload. After submission it also returns post_submit_notice and post_submit_links: relay the notice verbatim, keep every URL, and do not add an email-delivery caveat. Pass the thread_id and interview_handle from the Session section. Do not call start_session to recover a session, and do not use this tool to approve, edit, or submit.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | Interview thread id from start_session. | |
| interview_handle | Yes | Opaque interview handle from start_session. Pass it on every later tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint=false, so the bar is lower, yet the description adds real behavioral context: the read is non-advancing, post-submission calls return post_submit_notice and post_submit_links, and the notice must be relayed verbatim with URLs preserved. It still omits failure behavior (expired/invalid handle) and whether reads are idempotent across polls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then output behavior, then input provenance, then exclusions. Four dense sentences with no filler, though the 'do not add an email-delivery caveat' instruction is idiosyncratic and sits awkwardly mid-paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description still supplies the things structured fields cannot: non-advancing semantics, post-submit handling rules, input provenance, and explicit non-uses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both params are documented at the source, so the schema does the heavy lifting. The description adds only a mild locational hint ('from the Session section') and otherwise restates that both values must be passed; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the current app cost estimate') plus a crucial scope qualifier ('without advancing it'). It also implicitly distinguishes itself from the mutating siblings (submit_prd, send_action) by naming what it must not be used for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly excludes two wrong paths: 'Do not call start_session to recover a session' and 'do not use this tool to approve, edit, or submit.' Combined with 'read without advancing,' an agent knows exactly when this tool applies and which sibling to pick instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_actionSubmit the pending choiceAInspect
Submit the user's pending choice. Set action_type to a value from pending_gate_payload.allowed_actions. In Review each step, action_type is required; confirmed_by_user=true is preferred and is not a substitute for it. In Run it for me, omit action_type and payload to advance one milestone, and do not ask the user to choose – show the user that milestone's Auto-complete decision receipt and pipe-table. Do not ask them to approve it. Call send_action once per result, and only again on the next result while next_tool is send_action. When next_tool is submit_prd, stop and offer submission. An approve moves one phase: stories to requirements, requirements to the technical spec, then the tech spec to the estimate. In Review each step, stories_reject, requirements_reject, and techspec_reject show the current table again and wait. When the user describes the change, call send_turn with their exact words and show the regenerated table that comes back. mode_select_a, mode_select_b, and mode_select_c are only the How much time pick: Normal, Quick estimate, or Detailed. Do not use them for Review each step or Run it for me. That choice is send_turn with interaction_mode. For clarifying_questions_submit, set payload.answers by question id with the letter only, such as {"q1":"A","q2":"B"}, not "1A". A plain reply such as "1B, 2A, 3C", or any wording that combines options, goes through send_turn. Do not split one question into several letters.
| Name | Required | Description | Default |
|---|---|---|---|
| payload | No | ||
| thread_id | Yes | Interview thread id from start_session. | |
| action_type | No | Widget action type from allowed_actions. Optional in auto_complete; defaults fill the pending gate. | |
| interview_handle | Yes | Opaque interview handle from start_session. Pass it on every later tool. | |
| confirmed_by_user | No | Preferred when the user explicitly chose. Not required when action_type is already set to an allowed_actions value with a complete payload. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-read-only, non-destructive, closed-world; the description adds what actually happens: one call per result, re-call only while next_tool is send_action, an approve advances exactly one phase, and reject actions re-display the current table and wait. It also covers the auto-complete path's receipt/pipe-table behavior and the instruction not to ask for approval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the required-input rule are front-loaded, and nearly every sentence carries a routing or formatting constraint. It is dense and full of chained conditionals that would read better as a short list, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateful widget-submission tool with an output schema and nested payload, it covers mode differences, the next_tool handoff, rejection loops, and the exact answer format. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, but the description still adds meaning the schema lacks: action_type must come from allowed_actions, action_type and payload are omitted in auto-complete, confirmed_by_user is preferred but not a substitute, and payload.answers must be keyed by question id with letter-only values like {"q1":"A"}. That last example directly disambiguates a nested-object parameter the schema leaves as untyped additionalProperties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('Submit the user's pending choice') and immediately narrows the action_type source to pending_gate_payload.allowed_actions. It explicitly distinguishes itself from siblings by naming send_turn and submit_prd and describing the handoff conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It spells out both modes: in Review each step action_type is required, in Run it for me omit action_type and payload. It names the alternative (send_turn with interaction_mode) and the exact cases where mode_select_* must not be used, and tells the agent to stop and offer submission when next_tool is submit_prd.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_turnContinue app estimate or revise scopeAInspect
Continue an app cost estimate by sending the user's answers or requested changes to the MVP scope, user stories, requirements, or technical specification. Pass their exact words in input_as_text, even when next_tool is send_action. Compact replies such as "1A, 2B" are valid. Preserve the user's selections; in interaction mode Review each step do not choose answers for them. In interaction mode Review each step, relay the pipe-table and wait for approval. In Run it for me, relay the table and the decision receipt, then continue. After the user picks Review each step or Run it for me, set interaction_mode to clarify_first or auto_complete on this call. Include input_as_text when their reply also contains an idea or an answer. Omit input_as_text only when the reply is just the mode. Do not use send_action or mode_select_* for that choice. If no mode is set yet and the user continues without choosing, omit interaction_mode and the server accepts clarify_first. Phrases like "Run it for me" or "auto-complete" in input_as_text switch the thread to auto_complete.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | Interview thread id from start_session. | |
| input_as_text | No | User message text; omit for a style-only interaction_mode switch. | |
| interaction_mode | No | Interview style: clarify_first (Review each step) or auto_complete (Run it for me). Required for a style-only switch; when omitted with input_as_text, clarify_first is accepted by default. | |
| interview_handle | Yes | Opaque interview handle from start_session. Pass it on every later tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, destructive=false, openWorld=false, so the description adds real value: it discloses a hidden side effect (phrases like 'Run it for me' inside input_as_text silently switch the thread to auto_complete) and a server default (clarify_first is accepted when interaction_mode is omitted). It does not describe the response shape, but an output schema exists, so that omission is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is largely load-bearing, but the interaction-mode guidance is restated almost verbatim ('In interaction mode Review each step...' appears twice), and the unquoted enum-style phrasing ('Review each step', 'Run it for me') is dense to parse. The core instruction to pass exact words is front-loaded, but tightening would materially help readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation-ish tool with an output schema and full annotation coverage, the description covers the awkward part — thread mode handoff and verbatim input handling. Only minor gaps remain, such as what happens to the table/decision receipt on the next turn, which the output schema presumably covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, and the description earns above that by adding omission semantics the schema only hints at: omit input_as_text *only* when the reply is just the mode, and omit interaction_mode when no mode is set yet. It also clarifies that compact replies like '1A, 2B' are valid verbatim input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Continue an app cost estimate') and enumerates exactly what payload it carries: answers or scope changes to MVP scope, user stories, requirements, or tech spec. It also explicitly carves itself away from siblings ('Do not use send_action or mode_select_* for that choice'), so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives when-to-use (sending user answers or requested changes), when-not (mode selection alone goes elsewhere; do not use send_action or mode_select_*), and explicit fallback behavior when no mode has been chosen yet. It also branches guidance by interaction mode ('Review each step' vs 'Run it for me'), which is precisely the decision an agent needs to make.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sessionStart an app cost estimateAInspect
Start a guided session to estimate app development cost, scope an MVP, and generate a software PRD. No portal account or personal access token is required. Call it with no arguments unless the user already named Review each step (clarify_first) or Run it for me (auto_complete). Do not choose an interaction mode on the user's behalf — wanting an estimate or a fast answer is not auto_complete. If interaction_mode_question is returned, show both Review each step and Run it for me, with Review each step as the default, and wait for the user's pick before send_turn. The text result has a Session section with thread_id and interview_handle. Copy those into every later tool. Preserve an explicitly selected mode without asking the user to choose again.
| Name | Required | Description | Default |
|---|---|---|---|
| interaction_mode | No | Omit this. Set it only when the user explicitly named a mode (e.g. "use auto-complete"): clarify_first reviews every gate, auto_complete advances on its own and reports each decision. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say this is a non-read-only, non-destructive, closed-world call; the description supplies the real behavioral context: no portal account or token is needed, the call can return interaction_mode_question to prompt the user, and the text result carries a Session section with thread_id and interview_handle that must be copied into later tools. That is material state-handoff information an agent could not infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the operational rules follow in a logical order. There is some redundancy — 'Do not choose an interaction mode on the user's behalf' and the closing 'Preserve an explicitly selected mode without asking the user to choose again' restate the same rule — and the clause 'unless the user already named Review each step' is grammatically truncated, slightly slowing parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description still covers the important dynamic parts: the conditional question turn, the handle propagation, and mode persistence. The one soft spot is that the conditional trigger is described only loosely ('If interaction_mode_question is returned'), and the truncated mode-selection clause leaves a small ambiguity for a first-time caller.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum is documented inline, so the schema already carries the definition. The description still adds decision semantics the schema lacks: omit it by default, set it only when the user explicitly named a mode, and never infer auto_complete from a request for speed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and outcome set: start a guided session to estimate app development cost, scope an MVP, and generate a software PRD. That is clearly distinct from the siblings (get_estimate_status, send_turn, submit_prd), and the follow-on reference to send_turn reinforces where this tool sits in the flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the default invocation (no arguments), the two exceptions that justify passing interaction_mode, and a hard when-not: do not pick a mode on the user's behalf, since wanting an estimate or a fast answer is not auto_complete. It also scripts the interaction_mode_question branch, including which option is the default and that the agent must wait before send_turn.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_prdSubmit PRD and app estimateADestructiveInspect
Submit the completed software PRD and app development estimate for email delivery and portal project creation. Call it only after user stories, requirements, tech specs, and the estimate exist. (flow_stage estimate). Run it for me stops at this tool. Offer submission and wait for the user. Do not submit it the way an empty send_action advances a milestone. Before calling, tell the user it emails the pack and creates a portal project. Propose first_name, last_name, email, country, and project_name already provided by the user, or a project name suggested by the tool. Show those values for confirmation and ask only for missing fields; if none are known, ask for all five. Set confirmed_by_user=true only after they confirm. Offer optional feedback and omit it if they skip. Never invent a contact field. If they decline, do not call this tool. Omit contact arguments the thread already collected. Pass the thread_id and interview_handle from the Session section. Success is only a ### PRD submitted receipt that includes project_id and version_id. Relay post_submit_notice verbatim, including every URL, and do not add an email-delivery caveat. A missing next_tool, a timeout, or an error is not success. If the result is unclear, call get_estimate_status. Do not call submit_prd again while that check is still unclear. Do not call submit_prd again after a receipt with both ids.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Suggested or confirmed email from user context. | ||
| country | No | Suggested or confirmed home country from user context. | |
| feedback | No | Optional notes from the user (scope, questions, extra context). Ask, but omit if they skip. Never invent this. | |
| last_name | No | Suggested or confirmed surname from user context. | |
| thread_id | Yes | Interview thread id from start_session. | |
| first_name | No | Suggested or confirmed first name from user context. | |
| project_name | No | Suggested or confirmed project name. Prefer values the user stated. | |
| interview_handle | Yes | Opaque interview handle from start_session. Pass it on every later tool. | |
| confirmed_by_user | No | Set true only after the user confirms the contact details (or corrects them). | |
| interview_summary | No | Optional override; normally loaded from the thread |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true, and the description is consistent with that while adding substantial detail the annotations cannot convey: it emails the pack, creates a portal project, requires telling the user beforehand, requires showing contact values for confirmation, relays post_submit_notice verbatim, and defines a strict success criterion (a ### PRD submitted receipt with project_id and version_id) while treating timeout or missing next_tool as failure. It also adds an idempotency guard against re-calling after a receipt.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then proceeds through preconditions, confirmation flow, success criteria, and retry limits in a workable order. It is dense and a few sentences are grammatically broken ('Run it for me stops at this tool', 'Do not submit it the way an empty send_action advances a milestone'), which costs some parseability, but almost every sentence carries an operative rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, yet the description still defines exactly what a success receipt looks like and what to do when it is absent. For a destructive, open-world, 10-parameter submission tool with a human confirmation gate, nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the field descriptions already say 'suggested or confirmed' and 'set true only after the user confirms,' so much of the parameter guidance is restated. The description still adds non-schema rules that change invocation behavior: omit contact arguments the thread already collected, never invent a contact field, ask only for missing fields, and pass thread_id and interview_handle from the Session section.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and compound resource: submit the completed PRD and app estimate for email delivery and portal project creation. It also distinguishes itself from siblings by naming get_estimate_status as the fallback check and by warning against the empty send_action milestone advance, so an agent can tell the three apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition (only after user stories, requirements, tech specs, and the estimate exist), an explicit refusal path (if they decline, do not call this tool), and an explicit alternative when the outcome is ambiguous (call get_estimate_status). When-to-use, when-not-to-use, and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
get_estimate_status - First observed
send_action - First observed
send_turn - First observed
start_session - First observed
submit_prd
Related MCP Connectors
Pick a tech stack from a PRD and see what it costs now and at scale, after startup perks.
Turn your app idea into IA, wireframes, PRD, style guides, and dev specs for coding agents.
Turn a typed idea into a PRD, research, brand kit, tech design, roadmap and a Jira board.
Turn PRDs and product ideas into structured specs so coding agents build your intent, not theirs.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceGenerates professional client proposals including timeline, tech stack, price estimate, and milestone breakdown from client requirements.2 npmISC
- AlicenseBqualityBmaintenanceEnables converting software development requirements into traceable estimates, WBS breakdowns, PERT calculations, risk registers, roadmaps, quotations, and professional PDF proposals or action plans. It supports reviewing assumptions, exclusions, scope gaps, and commercial documentation before sending deliverables to clients.14MIT
- AlicenseAqualityDmaintenanceAnalyzes project ideas and recommends suitable tech stacks, features, and architecture patterns.26MIT
- AlicenseNot gradedqualityDmaintenanceTurns product ideas into implementation-ready planning packages including PRD, requirements, user flow, wireframes, data schema, API contracts, and SDK boundaries, with an MCP handoff for coding agents.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.