Moltline Business Suite
Server Details
30 finance, bookkeeping, legal-ops and SMB operations skill products. 6 of 8 tools free.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Server Listing
- moltline-mcp
Available Tools
8 toolscash_runwayCash RunwayARead-onlyIdempotentInspect
Compute months of cash runway and the projected out-of-cash date. FREE.
Typical input {"cash_balance": 120000, "monthly_burn": 15000, "monthly_revenue": 5000} returns {"runway_months": 12.0, "net_burn_monthly": 10000, "projected_out_of_cash": "YYYY-MM-DD"}; when revenue covers burn it returns {"runway": "infinite at current numbers (revenue covers burn)", ...}.
Use when a cash balance and a monthly burn are known. Not for per-unit profitability (unit_economics). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": ""} (for example {"error": "cash_balance must be >= 0"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| cash_balance | Yes | Cash on hand today; must be 0 or greater, e.g. 120000. | |
| monthly_burn | Yes | Total monthly outflow in the same currency as cash_balance, e.g. 15000. | |
| monthly_revenue | No | Monthly inflow netted against burn, e.g. 5000. Default 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds significant value beyond these: it details the error handling mechanism (never raises protocol error, returns error object with fix instructions), explains the special case when revenue covers burn (returns 'infinite'), and reinforces idempotency with 'after correcting the input it is always safe to retry.' No contradiction with 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?
The description is front-loaded with the core purpose, followed by a concise example, usage guidance, and error handling. Every sentence serves a distinct purpose—no redundancy or filler. Despite being a bit long, it is well-structured and efficiently informative.
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?
Given the tool's moderate complexity (3 parameters, 2 required, output schema exists), the description covers all essential aspects: purpose, example, edge case (infinite runway), error handling, and idempotency. The schema already documents parameters and output, so the description complements it fully without gaps.
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% with clear parameter descriptions, so baseline is 3. The description goes further by providing a concrete example input and output (e.g., cash_balance: 120000, monthly_burn: 15000, monthly_revenue: 5000) and explaining the calculation logic (net_burn_monthly). This adds practical context that aids invocation.
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 description begins with a clear verb+resource statement: 'Compute months of cash runway and the projected out-of-cash date.' It directly distinguishes from the sibling tool 'unit_economics' by explicitly stating 'Not for per-unit profitability (unit_economics).' This provides strong differentiation.
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?
The description explicitly states when to use the tool: 'Use when a cash balance and a monthly burn are known.' It also provides an exclusion: 'Not for per-unit profitability (unit_economics).' Additionally, it explains error behavior and retry safety, giving clear guidance on how to handle failures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_free_skillGet Free SkillARead-onlyIdempotentInspect
Load a product's free gateway skill with its complete instructions. FREE.
Typical input {"slug": "smb-ops-desk"} returns {"slug": "smb-ops-desk", "skill": "", "instructions": ""}.
Returns exactly one skill - the product's free gateway skill - chosen automatically from the slug, with no plan required. Use when the caller wants usable instructions immediately. Not for the product's other skills: those are named and need get_full_skill with a skill_name, which requires a paid plan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": ""} (for example {"error": "unknown slug ''. Use list_products."}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Product slug exactly as returned by list_products, e.g. "smb-ops-desk"; must be non-empty. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral detail beyond annotations: it states the tool never raises a protocol error but returns an error object, describes the error format with examples, and confirms every call is read-only and idempotent. This complements the readOnlyHint, idempotentHint, and destructiveHint annotations perfectly without contradiction.
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 description is well-structured with clear sections: purpose, example input/output, usage guidance, error behavior, and safety guarantees. Every sentence serves a purpose, and critical information is front-loaded ('Load a product's free gateway skill with its complete instructions'). While verbose, it remains efficient for the information density.
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?
Given the tool has one parameter, an output schema, and annotations, the description covers all necessary context: purpose, input format, output structure, error handling, sibling differentiation, and retry safety. It even references list_products as a prerequisite. No gaps remain.
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?
With 100% schema description coverage, the description still adds value by clarifying that the slug must be exactly as returned by list_products and providing an example ('smb-ops-desk'). This gives the agent a concrete reference for constructing valid input beyond the schema's constraints.
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 description clearly states it loads a product's free gateway skill with complete instructions, and explicitly distinguishes it from get_full_skill which handles other skills and requires a paid plan. It also provides a typical input and output example, making the purpose unambiguous.
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 explicitly tells when to use this tool ('when the caller wants usable instructions immediately') and when not to ('Not for the product's other skills: those are named and need get_full_skill with a skill_name, which requires a paid plan'). It also explains error handling and retry safety, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_full_productGet Full ProductARead-onlyIdempotentInspect
Load one product in full: its persona plus every paid skill. PREMIUM (license).
Typical input {"slug": "smb-ops-desk"} returns {"slug": ..., "name": ..., "persona": "", "skills": [{"name": ..., "instructions": ...}, ...], "free_skill": {...}}.
Returns persona plus every skill for one product. Use when the caller wants the whole product. Not for a single skill (get_full_skill) and not for a free look, which list_products and get_free_skill provide with no plan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": ""} (for example {"error": "unknown slug ''"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Product slug exactly as returned by list_products, e.g. "smb-ops-desk"; must be non-empty. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds critical behavioral info: error handling pattern ('never raises a protocol error — it returns {"error": ...}') and reinforces idempotency/read-only. No contradiction with 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?
Starts with a clear one-line summary, then example, then usage clarification, then error details. Every sentence adds value, though there is minor repetition (e.g., 'Returns persona plus every skill' echoes the opening). Overall well-structured and not overly verbose.
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 tool with one parameter, complete annotations, and an output schema, the description fully covers purpose, usage, error behavior, and return format. It also provides a concrete example and error examples. No gaps remain for typical usage.
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 baseline is 3. Description adds value by providing an example input ('{"slug": "smb-ops-desk"}') and clarifying that the slug comes from list_products, which is helpful context beyond the schema's description.
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?
Clearly states 'Load one product in full: its persona plus every paid skill' with specific verb (Load) and resource (one product). Explicitly distinguishes from siblings: 'Not for a single skill (get_full_skill) and not for a free look, which list_products and get_free_skill provide.'
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 when to use ('when the caller wants the whole product') and when not to ('Not for a single skill… not for a free look'). Also mentions PREMIUM license as a usage condition and provides error recovery guidance ('safe to retry').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_full_skillGet Full SkillARead-onlyIdempotentInspect
Load one paid skill's complete instructions from a product. PREMIUM (license).
Typical input {"slug": "smb-ops-desk", "skill_name": "invoice-chaser"} returns {"slug": ..., "skill": ..., "instructions": ""}.
Returns one named skill, selected by skill_name. Use when the caller wants one specific paid skill. Not for the free gateway skill, which get_free_skill returns with no plan, and not for every skill at once (get_full_product). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": ""} (for example {"error": "unknown slug ''"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Product slug exactly as returned by list_products, e.g. "smb-ops-desk"; must be non-empty. | |
| skill_name | Yes | Exact skill name as listed in that product's "skills" array from list_products, e.g. "invoice-chaser"; must be non-empty. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral context beyond annotations: it never raises a protocol error but returns an {"error": ...} object with fix guidance, and explicitly notes retry safety after correcting input. This supplements the annotation coverage.
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 description is well-structured and front-loaded with purpose, then example, usage, error behavior, and safety. It is slightly repetitive ('Returns one named skill' re-states the purpose) but overall every section earns its place and it is not bloated.
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?
Given that an output schema exists, the description need not detail return fields, but it still covers the example return shape. It covers usage context, exclusions, error handling, and idempotent retry behavior. This is complete for a moderate-complexity tool with strong annotations.
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%, so the baseline is 3. The description adds an example input and clarifies skill_name's role ('selected by skill_name'), but the schema already documents both parameters with examples and constraints. No additional meaning is critical.
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 description starts with a specific verb+resource: 'Load one paid skill's complete instructions from a product.' It clearly distinguishes from siblings by explicitly contrasting with get_free_skill and get_full_product, naming what this tool returns (one named skill).
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?
Provides explicit guidance: 'Use when the caller wants one specific paid skill.' It also states exclusions: 'Not for the free gateway skill... and not for every skill at once (get_full_product)', naming the alternative tools. This is clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsList ProductsARead-onlyIdempotentInspect
List every product in the Business Suite line with its included skills. FREE.
Takes no arguments. Typical input {} returns a list of 30 product objects, each {"slug": "smb-ops-desk", "name": ..., "tagline": ..., "skills": ["Skill A", ...], "free_skill": "Gateway Skill Name"}. Use the returned slug values with get_free_skill, get_full_product, or get_full_skill.
Returns metadata only - no persona text and no skill instructions. Use when the caller wants to see what this server covers. Not for keyword search across the whole 138-product catalog, which the catalog server's search_catalog does, and not for instructions the caller can act on (get_free_skill). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": ""}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint; the description reinforces these by stating 'every call is read-only and idempotent' and adds detailed error handling behavior: 'never raises a protocol error — it returns {"error": ...}'. This goes beyond annotations to fully disclose the tool's behavior.
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 description is well-structured with the main purpose first, followed by return format, usage guidance, exclusions, and error handling. It is slightly verbose (e.g., the error sentence is long) but every sentence adds value. Front-loading is effective, making it easy to scan.
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?
Given the tool's simplicity (no parameters, no input complexity), the description fully covers all necessary aspects: return format, typical output size, how to use outputs, exclusions, error behavior, and safety guarantees. With an output schema present, the description does not need to detail return values further, but it provides a clear summary anyway.
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?
The tool has no parameters (0 params), so baseline is 4. The description confirms 'takes no arguments' and describes the typical input/output, adding clarity beyond the empty schema. Although schema coverage is 100%, the description's extra detail (e.g., 'typical input {} returns a list of 30 product objects') justifies the baseline score.
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 description explicitly states the verb 'list' and the resource 'every product in the Business Suite line' with its included skills. It also distinguishes from sibling tools by noting that it is not for keyword search across the whole catalog (search_catalog) and not for instructions (get_free_skill), making the purpose unambiguous.
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?
The description gives clear guidance: 'Use when the caller wants to see what this server covers' and explicitly states when not to use it ('Not for keyword search...' and 'not for instructions the caller can act on'). It also directs the user to alternative tools (get_free_skill, get_full_product, etc.) after obtaining slug values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loan_paymentLoan PaymentARead-onlyIdempotentInspect
Compute an amortized loan payment: monthly payment, total paid, total interest. FREE.
Administrative math only — not financial advice. Typical input {"principal": 250000, "annual_rate_pct": 6.5, "years": 30} returns {"monthly_payment": 1580.17, "months": 360, "total_paid": ..., "total_interest": ...}.
Use for a fixed-rate amortized loan. Not for interest-free schedules - the merchant server's installment_plan splits a total without interest. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": ""} (for example {"error": "principal and years must be > 0"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| years | Yes | Loan term in years; must be greater than 0; fractions allowed, e.g. 30. | |
| principal | Yes | Loan amount; must be greater than 0, e.g. 250000. | |
| annual_rate_pct | Yes | Annual interest rate as a percentage, 0 to 100, e.g. 6.5 for 6.5%. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint. The description adds significant value by explaining error handling behavior ('never raises a protocol error — it returns an error object'), the 'FREE' cost indicator, and the idempotent retry safety. No contradictions with 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?
The description is well-structured with clear sections: purpose, caveat, example, usage guidelines, error handling, and safety. Every sentence adds value without redundancy. It is front-loaded with the core purpose.
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?
Given the presence of an output schema, the description does not need to detail return values. It covers error handling, usage restrictions, safety, and provides an example. This is complete for effective tool use.
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% with detailed parameter descriptions. The description includes an example input and output, which helps tie parameters together but does not add new semantic information beyond what the schema already provides. Baseline 3 is appropriate.
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 description clearly states the tool's verb and resource: 'Compute an amortized loan payment: monthly payment, total paid, total interest.' It also provides an example and distinguishes from the 'installment_plan' tool for interest-free loans, which is not a sibling but is mentioned as an alternative, helping to differentiate purpose.
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 when to use ('Use for a fixed-rate amortized loan') and when not to use ('Not for interest-free schedules'), and names the alternative tool ('installment_plan'). Also includes a caveat ('Administrative math only — not financial advice'). This provides clear guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
target_priceTarget PriceARead-onlyIdempotentInspect
Compute the selling price needed to hit a target margin percentage. FREE.
Typical input {"unit_cost": 12, "target_margin_pct": 60} returns {"required_price": 30.0, "unit_margin": 18.0, "equivalent_markup_pct": 150.0}.
The inverse of unit_economics - solves for price from a target margin. Use when the margin is the fixed requirement. Not when the price is already set. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": ""} (for example {"error": "target_margin_pct must be between 0 and 100"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_cost | Yes | Variable cost per unit; must be 0 or greater, e.g. 12.0. | |
| target_margin_pct | Yes | Desired gross margin percentage, strictly between 0 and 100, e.g. 60 for a 60% margin. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description reinforces these while adding that the tool 'never raises a protocol error' and instead returns a structured error object. It also explains the retry safety after correcting input, which is actionable behavior beyond what annotations provide.
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 description is front-loaded with the core purpose, followed by a useful example and then usage and error behavior. Every sentence contributes information, and the structure is logical with no redundancy or wasted words.
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?
Given the tool's simplicity, the description covers purpose, usage, examples, error behavior, and idempotency. Combined with the comprehensive input and output schemas, an agent has all information needed to invoke the tool correctly without gaps.
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?
The schema provides 100% coverage of both parameters with descriptive details, so the description is not required to redefine them. The description adds a concrete example (unit_cost=12, target_margin_pct=60) and output, but this does not introduce new semantics beyond the schema. Thus a baseline 3 is appropriate.
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 description explicitly states 'Compute the selling price needed to hit a target margin percentage' and identifies the tool as the inverse of unit_economics, clearly distinguishing it from that sibling. The verb 'Compute' and the resource 'selling price' make the function unambiguous and specific.
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?
The description gives explicit when-to-use guidance: 'Use when the margin is the fixed requirement. Not when the price is already set.' It also names the inverse relationship to unit_economics, providing clear context for selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unit_economicsUnit EconomicsARead-onlyIdempotentInspect
Calculate unit economics: margin, break-even, LTV:CAC, and a plain reading. FREE.
Typical input {"price": 49, "unit_cost": 12, "fixed_costs_monthly": 8000} returns {"unit_margin": 37.0, "margin_pct": 75.5, "markup_pct": 308.3, "breakeven_units_per_month": 216.2, "reading": ["..."]}. LTV fields appear when cac is provided.
Use when price, variable cost, and fixed costs are known and margin or break-even is the question. Not for cash position over time (cash_runway) and not for solving backward from a target margin (target_price). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": ""} (for example {"error": "price must be > 0"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| cac | No | Customer acquisition cost; a value greater than 0 enables LTV and LTV:CAC. Default 0 (skipped). | |
| price | Yes | Selling price per unit; must be greater than 0, e.g. 49.0. | |
| unit_cost | Yes | Variable cost per unit, in the same currency as price, e.g. 12.0. | |
| units_per_month | No | Expected sales volume per month; a value greater than 0 enables the monthly profit projection. Default 0 (skipped). | |
| fixed_costs_monthly | No | Fixed monthly costs; a value greater than 0 enables the break-even calculation. Default 0 (skipped). | |
| purchases_per_customer | No | Average lifetime purchases per customer used for LTV. Default 1. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description reinforces these and adds valuable error behavior: 'on invalid, missing, or malformed input this tool never raises a protocol error — it returns an error object with a fix message.' No contradictions, but additional details like rate limits or auth are absent.
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?
Well-structured single paragraph: purpose first, then example, usage guidelines, error behavior. No unnecessary sentences. The word 'FREE' is minor and doesn't detract. Efficient and front-loaded.
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?
Given 6 parameters, high schema coverage, existing output schema, and clear sibling differentiation, the description covers purpose, input/output examples, conditional behaviors, error handling, and retry safety. An agent can confidently use this tool.
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 baseline is 3. The description adds a concrete example (price=49, unit_cost=12, fixed_costs_monthly=8000) and explains conditional behavior: 'LTV fields appear when cac is provided.' This enhances understanding beyond schema alone.
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 description clearly states 'Calculate unit economics: margin, break-even, LTV:CAC, and a plain reading.' It provides a specific verb and resources, includes an example input/output, and distinguishes from siblings like cash_runway and target_price.
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?
Explicit guidance: 'Use when price, variable cost, and fixed costs are known and margin or break-even is the question. Not for cash position over time (cash_runway) and not for solving backward from a target margin (target_price).' Also explains error handling and safe retry behavior.
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. Dates show when Glama detected each change.
8 tool updates
- First observed
cash_runway - First observed
get_free_skill - First observed
get_full_product - First observed
get_full_skill - First observed
list_products - First observed
loan_payment - First observed
target_price - First observed
unit_economics
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
7 outreach, sequencing, call-coaching and CRM-hygiene skill products. 6 of 8 free.
20 inbox, calendar, travel, meals and family-logistics skill products. 7 of 9 free.
Business-ops MCP for FreedomOS — finance, OKRs, customer scoring, AI agents, content. 250+ tools.
246 tools to run sales, marketing & hiring: CRM, leads, AI calling, content, recruiting & SEO.
Related MCP Servers
- AlicenseBqualityAmaintenanceAI-native business management — invoices, expenses, clients, products, quotes, and webhooks. 31 tools for Claude, Cursor, Windsurf, and Cline.1003299MIT
- AlicenseNot gradedqualityDmaintenanceMulti-practice operations platform for independent professionals — 221 MCP tools across 26 practices including clients, invoices, contracts, bookings, and more.48MIT
- AlicenseAqualityBmaintenanceAI-powered invoice automation. Create PDF invoices, predict late payment risk 0-100, auto-send reminders, reconcile Stripe/PayPal payments, track cash flow. 10 MCP tools, 4 resources.1056MIT
- AlicenseCqualityCmaintenanceAI-powered skills for financial professionals. Comprehensive collection of finance, accounting, audit, and compliance skills for AI agents. IFRS/GAAP compliant with industry-specific applications.10014MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
The financial calculation tools (cash_runway, loan_payment, target_price, unit_economics) are clearly distinct in their inputs and outputs. However, within the product listing tools (list_products, get_free_skill, get_full_skill, get_full_product), the differentiation relies heavily on the 'FREE' vs 'PREMIUM' tags and the notion of 'free gateway skill' vs 'paid skills', which creates some ambiguity. An agent could easily pick get_free_skill when it actually needs get_full_skill.
The tool set uses a mix of verb_noun (list_products, get_free_skill, get_full_product) and simple noun phrases (cash_runway, loan_payment, target_price, unit_economics). While the 'get_*' prefix creates a consistent pattern for product/skill access, the standalone financial calculation tools break this pattern. Nevertheless, the naming is still clear and predictable within each subgroup.
With 8 tools, the set is well-scoped for a 'business' server that covers two clear domains: financial calculations (4 tools) and product/skill browsing (4 tools). Each tool covers a distinct operation without redundancy, and the count feels appropriate for the stated purpose.
The financial calculation tools cover common business math (runway, loan payments, margin/pricing, break-even), but lack coverage for revenue metrics (e.g., ARR, MRR), ROI, or depreciation. The product browsing tools provide a clear CRUD-like flow (list -> get), but there is no way to search or filter products, and the missing 'search_catalog' is referenced as existing on another server. This is a minor gap that may require agents to switch servers.