Skip to main content
Glama

Server Details

Read Lago customers, subscriptions, invoices, usage and revenue analytics; write events.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 3.8/5 across 24 of 24 tools scored. Lowest: 3.1/5.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct entity and action (e.g., lago_get_customer vs. lago_create_customer, lago_list_invoices vs. lago_get_invoice), with no overlapping purposes. The separation between analytics, customer, invoice, subscription, and other resource types is clear.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with lower_snake_case and the 'lago_' prefix. Actions like 'get', 'list', 'create', and 'retrieve-related' (e.g., lago_get_customer_current_usage) are uniform, making the naming predictable.

Tool Count4/5

With 24 tools, the server covers a broad range of billing/analytics operations. While slightly high, each tool serves a distinct purpose for reading or creating core entities and analytics. The count is well-scoped for its domain.

Completeness2/5

The server overwhelmingly focuses on read operations (list/get) with only two write tools (create_customer, create_event). Missing CRUD for invoices, subscriptions, plans, add-ons, coupons, credit notes, and wallets limits agents to mostly read-only workflows, creating significant gaps for managing billing lifecycles.

Available Tools

24 tools
lago_analytics_gross_revenueAnalytics: gross revenueA
Read-only
Inspect

Monthly gross revenue (finalized invoice payments + advance fees, net of tax/discounts). Lago API: GET /analytics/gross_revenue.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoNumber of months to return.
currencyNoCurrency filter (ISO 4217, e.g. USD).
external_customer_idNoFilter revenue at the customer level.
Behavior4/5

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

Annotations already declare readOnlyHint: true. Description adds that it is a GET request and explains the revenue composition (finalized payments, advance fees, net of tax/discounts). This provides useful behavioral context beyond annotations, though rate limits or other constraints are not mentioned.

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

Conciseness5/5

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

Extremely concise: one sentence describing the tool and one sentence for the API endpoint. Every word provides value, no fluff.

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

Completeness3/5

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

No output schema exists. Description lacks details on the return format (e.g., array of month-revenue objects). While the API endpoint is given, the description could be more complete for an analytical tool, missing pagination or response structure.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description does not add additional meaning to parameters beyond what is in the schema. The 'months' parameter is implied by 'monthly', but no further details.

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

Purpose5/5

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

Description clearly states the tool returns monthly gross revenue, defining components (finalized invoice payments + advance fees, net of tax/discounts) and providing the API endpoint. This is specific and distinguishes it from the sibling tool lago_analytics_mrr, though not explicitly contrasted.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like lago_analytics_mrr. The description only explains what it does, not the context or exclusions. Given the sibling tools, explicit usage guidelines would be helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_analytics_mrrAnalytics: MRRA
Read-only
Inspect

Monthly recurring revenue (MRR) from subscription fees. Lago API: GET /analytics/mrr.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoNumber of months to return.
currencyNoCurrency filter (ISO 4217, e.g. USD).
Behavior3/5

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

Annotations already provide readOnlyHint=true. The description adds minimal extra context (MRR from subscription fees, API endpoint) but does not disclose other behavioral traits such as aggregation or response format.

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

Conciseness5/5

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

The description is a single sentence with the API endpoint, conveying purpose efficiently with no unnecessary words.

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

Completeness3/5

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

While the tool is simple with two optional parameters and no output schema, the description lacks information about the response structure or data format, which would be helpful.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not add meaning beyond what is already in the input schema for the two parameters.

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

Purpose5/5

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

The description clearly states it provides MRR from subscription fees and includes the API endpoint, distinguishing it from sibling tools like lago_analytics_gross_revenue.

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

Usage Guidelines3/5

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

The description implies usage for MRR analytics from subscription fees but does not explicitly state when to use it over alternatives or provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_create_customerCreate customerB
Destructive
Inspect

Creates a customer in Lago (additive). Lago API: POST /customers with body { "customer": { ... } }.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoCustomer URL.
nameNoFull name of the customer.
emailNoEmail of the customer.
phoneNoPhone number.
countryNoBilling country code (ISO 3166 alpha-2).
currencyNoCustomer currency (ISO 4217).
metadataNoStructured metadata to attach to the customer (Lago expects an array of {key, value, display_in_invoice?} objects).
timezoneNoCustomer timezone, e.g. America/New_York.
legal_nameNoLegal company name.
external_idYesThe customer external unique identifier (required, provided by your application).
legal_numberNoLegal company number.
tax_identification_numberNoTax identification number.
Behavior1/5

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

The description states the tool is 'additive' (creating a new record), which contradicts the annotation 'destructiveHint: true' (implying destructive behavior). This contradiction severely undermines transparency, and the description does not clarify the discrepancy beyond the API detail.

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

Conciseness4/5

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

The description is one sentence plus the API endpoint, front-loading the action. It is concise and avoids unnecessary details, earning a high score for efficiency.

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

Completeness2/5

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

The description lacks information about return values (no output schema), and the contradiction between 'additive' and destructiveHint leaves agents uncertain about the tool's effects. For a tool with 12 parameters, more context on expected outcomes is needed.

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

Parameters3/5

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

Schema coverage is 100% with all parameters well-described. The tool description does not add additional semantic value beyond what the schema already provides, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states 'Creates a customer in Lago (additive)' with the specific API endpoint, making the verb and resource unambiguous. It distinguishes from sibling tools like lago_get_customer (read) and lago_list_customers (list).

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

Usage Guidelines3/5

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

The description implies usage when a new customer needs to be created, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among siblings like lago_get_customer for checking existence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_create_eventCreate usage eventA
Destructive
Inspect

Records a usage/metering event in Lago. This WILL be counted toward the customer's usage and affects billing. Idempotent via transaction_id. Lago API: POST /events with body { "event": { ... } }.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe billable metric code this event targets (required).
timestampNoUnix timestamp in seconds (or ISO); defaults to event reception time.
propertiesNoAdditional event properties used to compute the fee (required for sum/max/unique aggregations).
transaction_idYesUnique identifier for the event — the idempotency key (required).
external_subscription_idYesThe subscription external id to link the event to (required).
precise_total_amount_centsNoPrecise total amount in cents, used by the dynamic pricing model.
Behavior4/5

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

Annotations already mark destructiveHint=true; description adds that events are counted toward usage, affect billing, and are idempotent, plus API details. No contradiction.

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

Conciseness5/5

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

Two sentences with no waste; key info front-loaded.

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

Completeness4/5

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

Given no output schema and moderate complexity, description covers primary behavior. Missing return value/error info but sufficient for a creation tool.

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

Parameters3/5

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 idempotency context for transaction_id but no further parameter elaboration. Adequate.

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

Purpose5/5

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

The description clearly states the tool records a usage/metering event that affects billing, with idempotency via transaction_id and API endpoint. It distinguishes from sibling analytics/read tools.

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

Usage Guidelines3/5

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

The description implies usage for metering events but does not explicitly guide when to use vs alternatives like lago_create_customer or other creation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_billable_metricGet billable metricA
Read-only
Inspect

Retrieve a single billable metric by code. Lago API: GET /billable_metrics/{code}.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe billable metric's unique code.
Behavior3/5

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

Annotations already declare readOnlyHint=true, so read-only nature is covered. Description adds the API endpoint but does not disclose other behavioral traits like error conditions or rate limits. Adds marginal value beyond annotations.

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

Conciseness5/5

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

Extremely concise: two sentences. First sentence states purpose, second gives API reference. No wasted words, front-loaded.

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

Completeness4/5

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

For a simple retrieval tool with one parameter and no output schema, the description provides sufficient context: what it retrieves and how to specify it. Arguably complete for its complexity level.

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

Parameters3/5

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

Schema coverage is 100%—the parameter 'code' already has a clear description. The description's mention 'by code' adds no extra semantics beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve', the resource 'single billable metric', and the method 'by code'. This distinguishes it from sibling tools like list tools by specifying 'single'.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., lago_list_billable_metrics). The description implies use when you have a specific code but lacks explicit when/when-not context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_credit_noteGet credit noteA
Read-only
Inspect

Retrieve a single credit note by its Lago id. Lago API: GET /credit_notes/{lago_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
lago_idYesThe credit note's Lago id (UUID).
Behavior4/5

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

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds the REST endpoint (GET /credit_notes/{lago_id}) which confirms read behavior without adding contradictions.

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

Conciseness5/5

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

Two sentences, no redundant words, front-loaded with action and key constraint (by Lago id). Efficient and clear.

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

Completeness5/5

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

For a simple one-param read-only tool with annotations and full schema coverage, the description covers all necessary context: what it does, how to identify the resource, and the API call. No gaps.

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

Parameters3/5

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

The input schema covers 100% of parameter description, so the description adds no additional semantics beyond providing the endpoint template. Baseline is appropriate.

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

Purpose5/5

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

Description explicitly states retrieving a single credit note by its Lago id, using a clear verb-resource pair. The title and sibling list tools (e.g., lago_list_credit_notes) distinguish this as a singular retrieval operation.

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

Usage Guidelines4/5

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

Description implies usage when you have a specific Lago id, but does not explicitly state when not to use it or mention alternatives like the list endpoint. However, the context from sibling tool names makes the distinction clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_customerGet customerA
Read-only
Inspect

Retrieve a single customer by external id. Lago API: GET /customers/{external_customer_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
external_customer_idYesThe customer external unique identifier (from your application).
Behavior3/5

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

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds the retrieval method (by external id) and the API endpoint, but does not disclose additional behaviors such as rate limits, authentication requirements, or potential error states. Given the annotation coverage, the description provides marginal additive value.

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

Conciseness5/5

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

The description is extremely concise: one sentence stating the purpose and one sentence for the API endpoint. Every word is functional, no redundancy. It is front-loaded with the core action and resource.

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

Completeness5/5

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

For a simple read-only tool with one parameter and no output schema, the description is complete. It specifies the input (external id) and the result (retrieve a single customer). No additional context is needed given the tool's simplicity and the annotations covering safety.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter, which is clearly described as 'The customer external unique identifier (from your application).' The description echoes this by mentioning 'by external id', but does not add new insight or format details. Baseline 3 is appropriate when the schema fully handles parameters.

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

Purpose5/5

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

The description clearly states the action ('Retrieve'), the resource ('a single customer'), and the key identifier ('by external id'). It also references the API endpoint, leaving no ambiguity about what the tool does. This distinguishes it effectively from siblings like lago_list_customers or lago_create_customer.

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

Usage Guidelines3/5

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

The description implies usage for retrieving a specific customer, but it does not explicitly state when to use this tool versus alternatives like lagolist_customers or lago_get_customer_current_usage. No when-not-to-use or exclusion criteria are provided, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_customer_current_usageGet customer current usageA
Read-only
Inspect

Retrieve a customer's usage-based billing data for the current period. Lago API: GET /customers/{external_customer_id}/current_usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
apply_taxesNoWhether taxes should be applied. Defaults to true.
external_customer_idYesThe customer external unique identifier.
external_subscription_idYesThe subscription's external unique identifier (required).
Behavior4/5

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

The readOnlyHint annotation already indicates safe read operation. The description adds that it returns usage-based billing data and the API endpoint, providing context beyond the annotation. No contradictions.

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

Conciseness5/5

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

The description is extremely concise with two sentences, front-loaded with the key action and resource. No wasted words.

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

Completeness4/5

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

Given no output schema and low complexity, the description is adequate. It conveys the tool's purpose and API path. Missing details about response structure or pagination, but acceptable for a simple retrieval tool.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for all three parameters. The description does not add additional meaning beyond what the schema already provides, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states it retrieves a customer's usage-based billing data for the current period, using a specific verb ('Retrieve') and resource. It distinguishes from the sibling 'lago_get_customer_past_usage' by specifying 'current period'.

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

Usage Guidelines3/5

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

The description implies usage for current period data but does not explicitly state when to use this tool versus alternatives like past usage or other billing tools. No exclusion criteria or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_customer_past_usageGet customer past usageB
Read-only
Inspect

Retrieve a customer's usage-based billing data for past periods. Lago API: GET /customers/{external_customer_id}/past_usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
periods_countNoNumber of past billing periods to return.
billable_metric_codeNoFilter usage to a specific billable metric code.
external_customer_idYesThe customer external unique identifier.
external_subscription_idYesThe subscription's external unique identifier (required).
Behavior3/5

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

Annotations indicate readOnlyHint=true, consistent with 'retrieve'. The description adds the API endpoint but no further behavioral traits (e.g., error handling, rate limits). With annotations present, the description's additional value is minimal.

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

Conciseness5/5

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

Extremely concise: two sentences covering purpose and API endpoint. No unnecessary words, front-loaded with key action.

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

Completeness3/5

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

Lacks details about return values or output structure, which is important since no output schema exists. Otherwise, purpose and parameters are adequately covered.

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

Parameters3/5

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 does not add any parameter information beyond what the schema already provides.

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

Purpose4/5

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

The description clearly states the tool retrieves past usage-based billing data for a customer, and the name and title distinguish it from similar tools like lago_get_customer_current_usage. However, it does not explicitly differentiate from siblings.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description only explains what it does, not when to choose it over other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_customer_portal_urlGet customer portal URLA
Read-only
Inspect

Get a customer's billing portal URL. Lago API: GET /customers/{external_customer_id}/portal_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
external_customer_idYesThe customer external unique identifier.
Behavior3/5

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

Annotations already include readOnlyHint=true, indicating no destructive side effects. The description adds the API endpoint but does not disclose any additional behavioral traits such as error conditions or rate limits. It aligns with annotations, so no contradiction.

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

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences that immediately convey the tool's purpose. No unnecessary information, and the key action is front-loaded.

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

Completeness3/5

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

Given the tool's low complexity (single parameter, no output schema), the description covers the basic purpose and API endpoint. However, it does not describe the return value or any potential errors, leaving some ambiguity for an AI agent.

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

Parameters3/5

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

Schema coverage is 100%, and the description does not add extra meaning beyond the schema's description of external_customer_id as 'The customer external unique identifier.' Thus, baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get a customer's billing portal URL.' It specifies the verb (get) and resource (billing portal URL), and distinguishes from sibling tools like lago_get_customer or lago_get_customer_current_usage which retrieve different data.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like lago_get_customer or lago_list_invoices. While the purpose is clear, no guidance on context or prerequisites is provided, making it implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_invoiceGet invoiceA
Read-only
Inspect

Retrieve a single invoice by its Lago id. Lago API: GET /invoices/{lago_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
lago_idYesThe invoice's Lago id (UUID).
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the agent knows it's a safe read-only operation. The description adds the API endpoint URI, which is useful but not critical for behavioral understanding.

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

Conciseness5/5

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

Two short sentences front-load the purpose and include the API endpoint. No wasted words.

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

Completeness5/5

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

For a simple single-id retrieval tool with annotations and a well-defined schema, the description provides all necessary context: what it does, how to identify the invoice, and the underlying API call.

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

Parameters3/5

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

The single parameter 'lago_id' is fully described in the schema with its type and purpose. The description does not add extra semantic meaning, but schema coverage is 100%, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool retrieves a single invoice by its Lago id, with the specific verb 'Retrieve' and the resource 'invoice'. It distinguishes from list tools via the singular nature.

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

Usage Guidelines4/5

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

While not explicitly stating when not to use, the context of a single invoice retrieval is clear. Sibling tools like lago_list_invoices exist for listing, so usage is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_planGet planA
Read-only
Inspect

Retrieve a single plan by code. Lago API: GET /plans/{code}.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe plan's unique code.
Behavior3/5

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

The description 'Retrieve' aligns with the readOnlyHint annotation, but it adds no additional behavioral context beyond what the annotation already provides. No contradictions.

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

Conciseness5/5

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

The description is extremely concise: two sentences with no redundant information. It front-loads the purpose and provides the API reference efficiently.

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

Completeness5/5

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

For a simple retrieval tool with a single required parameter, no output schema, and a readOnlyHint annotation, the description is fully complete. It tells the agent everything needed to invoke the tool correctly.

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

Parameters4/5

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

The description reinforces the parameter role ('by code') and adds the API endpoint structure ('GET /plans/{code}'), which provides extra context beyond the schema description. Schema coverage is 100%, so baseline is 3; the added endpoint detail justifies a 4.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve', resource 'single plan', and the method 'by code'. It distinguishes from list plans by specifying 'single' and includes the API endpoint for additional context.

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

Usage Guidelines3/5

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

The description implies usage (fetch a specific plan by code) but does not explicitly state when to use this tool versus alternatives like lago_list_plans, nor does it provide when-not or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_get_subscriptionGet subscriptionA
Read-only
Inspect

Retrieve a single subscription by external id. Lago API: GET /subscriptions/{external_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
external_idYesThe subscription's external unique identifier.
Behavior4/5

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

Annotations already indicate readOnlyHint=true, and the description adds the API endpoint, aligning with read-only behavior. No contradictions.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, no waste.

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

Completeness5/5

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

For a simple read-only retrieval with one parameter, the description is complete. The API endpoint adds useful context. No output schema, but the return type is implied.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already fully documents the single parameter. The description adds no additional parameter meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and resource 'single subscription' with the required identifier 'external id', distinguishing it from list tools.

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

Usage Guidelines4/5

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

While no explicit when-to-use vs alternatives is given, the description implies using this when you have an external_id for a specific subscription, and siblings like lago_list_subscriptions are for listings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_add_onsList add-onsA
Read-only
Inspect

List add-ons, paginated. Lago API: GET /add_ons.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
per_pageNoNumber of records per page.
Behavior3/5

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

Annotations declare readOnlyHint=true, so the description's additional mention of pagination adds some behavioral context. However, it lacks details on result format or other behaviors, so score is adequate but not high.

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

Conciseness5/5

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

Extremely concise: one sentence with zero wasted words. Front-loaded with the main purpose.

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

Completeness3/5

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

Tool is simple with two optional params and no output schema. Description mentions pagination but omits what the tool returns (array of add-on objects). With good annotations, it's minimally adequate but could be more complete.

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

Parameters3/5

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

Schema covers both parameters with clear descriptions. Description repeats 'paginated' but does not add deeper semantics beyond what schema already provides. Baseline 3 is appropriate due to 100% schema coverage.

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

Purpose5/5

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

Description clearly states the verb 'List' and the resource 'add-ons', which distinguishes it from sibling list tools for other resources. It also mentions pagination, adding specificity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus other list tools (e.g., lago_list_plans, lago_list_invoices). No context on prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_billable_metricsList billable metricsA
Read-only
Inspect

List billable metrics, paginated. Lago API: GET /billable_metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
per_pageNoNumber of records per page.
Behavior3/5

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

Annotations already mark the tool as read-only. The description adds that the results are paginated, which is a useful behavioral trait beyond annotations. However, it does not discuss authentication, rate limits, or error behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the essential information. Every word serves a purpose, with no redundancy.

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

Completeness3/5

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

Given the tool is simple with no output schema and two self-explanatory parameters, the description minimally covers the needed context. However, it does not explicitly state that the return is a list of billable metrics, which would improve completeness.

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

Parameters3/5

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

The input schema already fully describes both parameters (page and per_page) with clear descriptions. The description adds no additional meaning beyond the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action 'List' and the resource 'billable metrics', and specifies it is paginated. It uniquely identifies the tool among siblings that list different resources.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit 'when-to-use' or 'when-not-to-use' context, which is needed for a list of many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_couponsList couponsB
Read-only
Inspect

List coupons, paginated. Lago API: GET /coupons.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
per_pageNoNumber of records per page.
Behavior3/5

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

Annotations already indicate readOnlyHint=true, so the description adds value by mentioning pagination behavior and the API endpoint. No contradiction, but lacks additional behavioral context such as rate limits or response contents.

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

Conciseness5/5

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

The description is extremely concise with only two sentences, front-loading the key action and resource. Every word adds value, and there is no redundant information.

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

Completeness3/5

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

For a simple list tool with two optional parameters and readOnlyHint, the description is minimally adequate. However, without an output schema, more detail about the response structure would improve completeness for an AI agent.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters adequately described in the schema. The description does not add parameter-specific meaning beyond what is already provided, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'List' and resource 'coupons', and mentions pagination. It effectively communicates the tool's function, but does not explicitly differentiate from sibling list tools, though the resource name itself does that.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as when to use other list tools (e.g., lago_list_add_ons) or any prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_credit_notesList credit notesA
Read-only
Inspect

List credit notes, optionally filtered by customer. Lago API: GET /credit_notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
per_pageNoNumber of records per page.
external_customer_idNoFilter by customer external id.
Behavior2/5

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

Annotations already declare readOnlyHint: true, and the description adds no additional behavioral context (e.g., whether the tool is safe, idempotent, or has rate limits). No contradiction, but no extra value beyond annotations.

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

Conciseness5/5

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

The description is two sentences long with zero wasted words. It front-loads the main action and is immediately understandable.

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

Completeness4/5

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

For a simple list tool with no output schema, the description is fairly complete: it states the resource, optional filter, and API endpoint. Missing details like pagination behavior are covered by the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description does not add additional meaning beyond what the schema provides, resulting in a baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool lists credit notes and allows optional filtering by customer. It uses specific verb 'list' and resource 'credit notes', and the sibling tool set includes lago_get_credit_note for single retrieval, distinguishing this tool's purpose.

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

Usage Guidelines3/5

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

The description mentions optional filtering by customer but does not provide explicit guidance on when to use this tool versus alternatives (e.g., lago_get_credit_note). No when-not-to-use or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_customersList customersA
Read-only
Inspect

List customers in Lago, paginated. Lago API: GET /customers.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
per_pageNoNumber of records per page.
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds value by mentioning pagination and the API endpoint. No contradictions. It could mention default pagination behavior or rate limits, but 4 is appropriate given 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.

Conciseness5/5

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

Two short sentences, no filler. Every word adds value. The purpose is front-loaded. Ideal conciseness for a simple list tool.

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

Completeness4/5

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

For a simple paginated list tool with no output schema, the description adequately covers the purpose and pagination. It could mention what the response contains (list of customers), but the API endpoint implies standard Lago list response. Good enough for an AI agent.

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

Parameters3/5

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

Schema coverage is 100%, so the input schema already documents both parameters ('page', 'per_page') with descriptions. The description does not add any additional semantic information beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action ('List'), the resource ('customers'), and the context ('in Lago, paginated'). It also provides the API endpoint. This distinguishes it from sibling tools like lago_get_customer (single customer) and other list tools (e.g., lago_list_invoices).

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

Usage Guidelines3/5

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

The description implies when to use this tool (to list customers) but provides no guidance on when not to use it or alternatives. Given many sibling tools, explicit usage context would be beneficial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_customer_subscriptionsList customer subscriptionsA
Read-only
Inspect

List a customer's subscriptions. Lago API: GET /customers/{external_customer_id}/subscriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
external_customer_idYesThe customer external unique identifier.
Behavior3/5

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

The description adds the API endpoint but no behavioral details beyond what annotations provide (readOnlyHint). No mention of pagination, error handling, or rate limits.

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

Conciseness5/5

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

Two concise sentences with no redundant information. Directly states purpose and API endpoint.

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

Completeness3/5

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

Lacks details on output format, pagination, or ordering. For a list operation, some context about the return structure would improve completeness, but the simple scope (1 param, no output schema) keeps the gap moderate.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, which already has a description. The tool description does not add any new meaning or usage details for the parameter.

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

Purpose5/5

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

Clearly states 'List a customer's subscriptions' with a specific verb and resource. Distinguishes from sibling tool 'lago_list_subscriptions' by specifying per-customer scope.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. While the name implies per-customer context, the description does not specify use cases or mention sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_feesList feesA
Read-only
Inspect

List fees, optionally filtered by customer, subscription, or fee type. Lago API: GET /fees.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
fee_typeNoFilter by fee type: charge | add_on | subscription | credit | commitment.
per_pageNoNumber of records per page.
external_customer_idNoFilter by customer external id.
external_subscription_idNoFilter by subscription external id.
Behavior3/5

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

Annotations already provide readOnlyHint=true. Description adds API endpoint and filtering capability. No extra behavioral context beyond what annotations convey.

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

Conciseness5/5

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

Two concise sentences: first states purpose and filtering, second provides API reference. No wasted words.

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

Completeness4/5

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

Adequate for a list tool with no output schema. Covers key aspects; could mention pagination but schema already defines page/per_page parameters.

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

Parameters3/5

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

Schema has 100% description coverage for all 5 parameters. Description reiterates filtering by customer, subscription, or fee type, adding marginal value.

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

Purpose5/5

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

Description clearly states it lists fees with optional filters by customer, subscription, or fee type. Includes API endpoint. Distinct from sibling list tools.

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

Usage Guidelines3/5

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

Description mentions optional filtering but does not provide explicit guidance on when to use this tool versus other list tools or what filters are appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_invoicesList invoicesA
Read-only
Inspect

List invoices, optionally filtered by customer, status, payment status, or issuing date. Lago API: GET /invoices.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
statusNoFilter by a single status: draft | finalized | failed | pending | voided.
per_pageNoNumber of records per page.
payment_statusNoFilter by a single payment status: pending | failed | succeeded.
issuing_date_toNoFilter invoices issued on/before this date (yyyy-mm-dd).
issuing_date_fromNoFilter invoices issued on/after this date (yyyy-mm-dd).
external_customer_idNoFilter by customer external id.
Behavior2/5

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

The annotation already declares readOnlyHint=true, and the description only adds 'Lago API: GET /invoices', which is basic. No additional behavioral context beyond the annotation is provided.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently states the action and optional filters. Every part earns its place; no wasted words.

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

Completeness4/5

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

For a simple list tool with no output schema, the description covers the core functionality and filter options. It omits pagination details, but the schema covers the pagination parameters. Overall sufficient context for selection and invocation.

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

Parameters3/5

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

All 7 parameters are described in the schema (100% coverage). The description merely summarizes filter types without adding new meaning beyond the schema descriptions. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'invoices', and specifies optional filters (customer, status, payment status, issuing date). This explicitly distinguishes it from sibling tools like 'lago_get_invoice' which retrieves a single invoice.

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

Usage Guidelines3/5

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

The description implies use for listing invoices with optional filters, but does not provide explicit guidance on when to use this tool versus alternatives like 'lago_get_invoice' or other list tools. No when-not or exclusion criteria are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_plansList plansA
Read-only
Inspect

List billing plans, paginated. Lago API: GET /plans.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
per_pageNoNumber of records per page.
Behavior3/5

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

Annotations already mark readOnlyHint=true, confirming a safe read operation. Description adds minimal behavioral context beyond 'list' and 'paginated', missing details like authentication requirements or rate limits.

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

Conciseness5/5

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

Two concise sentences, front-loaded with purpose, no wasted words. Includes API endpoint for reference.

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

Completeness4/5

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

For a simple paginated list tool with good schema and annotations, the description is largely sufficient. Lacks specifics about return format, but no output schema exists to require that explanation.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to explain parameters. It mentions 'paginated', which hints at page and per_page, but adds no further semantic value beyond the schema.

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

Purpose5/5

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

Clearly states verb 'List', resource 'billing plans', and key feature 'paginated'. Distinguishes from sibling 'lago_get_plan' which retrieves a single plan.

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

Usage Guidelines3/5

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

Describes what the tool does but provides no explicit guidance on when to use it versus alternatives or how to choose pagination parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_subscriptionsList subscriptionsA
Read-only
Inspect

List subscriptions, optionally filtered by customer, plan, or status. Lago API: GET /subscriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
statusNoFilter by a single status: active | pending | canceled | terminated. Default active.
per_pageNoNumber of records per page.
plan_codeNoFilter by plan code.
external_customer_idNoFilter by customer external id.
Behavior3/5

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

Annotations already declare readOnlyHint=true. Description adds no behavioral details beyond listing and filtering, missing pagination or rate limits.

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

Conciseness5/5

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

Single sentence plus API reference; no unnecessary words, front-loaded with action and resource.

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

Completeness4/5

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

Adequate for a list tool with fully documented optional parameters and annotations; lacks return format but no output schema expected.

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

Parameters3/5

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 minimal context beyond schema descriptions, only noting that filters are optional.

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

Purpose4/5

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

Clearly states verb 'List' and resource 'subscriptions', with optional filters. Distinguishes from single-subscription tool but not explicitly from customer-specific list sibling.

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

Usage Guidelines3/5

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

Implies usage for listing subscriptions with optional filters, but does not provide guidance on when to use this versus lago_list_customer_subscriptions or other list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lago_list_walletsList walletsA
Read-only
Inspect

List a customer's prepaid credit wallets. Lago API: GET /customers/{external_customer_id}/wallets.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination.
per_pageNoNumber of records per page.
external_customer_idYesThe customer external unique identifier.
Behavior3/5

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

Annotations already declare readOnlyHint=true, which is consistent with the 'List' verb. The description adds the API method (GET) and endpoint, but does not disclose other behavioral traits like pagination behavior or response size limits. It does not contradict annotations.

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

Conciseness5/5

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

The description is two sentences, front-loading the purpose and then providing the API reference. It is concise with no superfluous information.

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

Completeness3/5

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

The description lacks information about the return value structure (no output schema), but the tool is a simple list operation. Pagination parameters are present but not explained in the description. For a read-only list tool with good parameter documentation, it is moderately complete but could be improved by mentioning response format.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all three parameters. The description adds no additional parameter-level meaning beyond what the schema provides; it mentions external_customer_id in the API path, but that is already described in the schema.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'a customer's prepaid credit wallets', and references the Lago API endpoint. It distinguishes from sibling tools by focusing on wallets and customer context.

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

Usage Guidelines3/5

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

The description implies usage for listing wallets of a customer but does not provide explicit guidance on when to use this tool vs. alternatives like other list tools. There are no exclusions or when-not-to-use instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    -
    quality
    F
    maintenance
    Provides real-time Stripe subscription analytics including MRR, churn, failed payments, and expiring trials. Enables AI assistants to answer business health questions like 'How's my business doing?'
    MIT
  • A
    license
    -
    quality
    F
    maintenance
    Read-only Stripe finance, ops, and risk reporting exposed via MCP, HTTP API, and CLI. Enables querying balances, payments, customers, payouts, reconciliation, and risk alerts without mutating Stripe state.
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.