garu-mcp
OfficialThis server lets you manage the Garu payment platform end-to-end from any MCP client: create PIX and boleto charges, manage customers and products, schedule recurring or one-time charges, and audit webhook deliveries.
Charges: Create PIX charges with QR codes and boletos bancários; list, retrieve, refund (full/partial), and cancel charges.
Customers: Create, list, get, update, and delete customers; set or clear a per-customer billing email override.
Products: List, get, create, and update products; manage per-product portal customization (branding, colors, messages, policies) for B2B2C use cases.
Scheduled charges: Create one-time or recurring schedules with card or Pix Automático; pause, resume, postpone, mark paid, force-bill, cancel recurrence, soft-cancel, change payment methods, and inspect billing attempts.
Webhooks: List, fetch, retry, or resend webhook events to audit whether customer endpoints received events.
Integration setup: Retrieve dashboard steps and URLs for configuring API keys and webhook endpoints.
Allows creation of instant PIX charges with auto-generated QR codes for Brazilian real-time payments via the Garu payment platform.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@garu-mcpCreate a PIX charge of R$150"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@garuhq/mcp
An MCP server for the Garu payment platform. Create charges, manage customers, and discover products — directly from any MCP client like Claude Desktop, Cursor, or Claude Code.
Features
PIX Charges — Create instant PIX charges with auto-generated QR codes for Brazilian real-time payments.
Boleto Charges — Generate boleto bancário payment slips.
Charge Management — List, retrieve, and refund charges (full or partial).
Products — List your seller's products and look them up by UUID — the same UUID accepted by the charge tools.
Customers — Create, list, get, update, and remove customers linked to your seller account.
Related MCP server: bepaid-mcp
Setup
Create a Garu account and get your API key at garu.com.br.
Usage
Claude Code
claude mcp add garu -e GARU_API_KEY=sk_live_xxx -- npx -y --package=@garuhq/mcp@latest garu-mcpCursor
Open the command palette and choose "Cursor Settings" > "MCP" > "Add new global MCP server".
{
"mcpServers": {
"garu": {
"command": "npx",
"args": ["-y", "--package=@garuhq/mcp@latest", "garu-mcp"],
"env": {
"GARU_API_KEY": "sk_live_xxx"
}
}
}
}Windsurf
Add to .windsurf/mcp.json:
{
"mcpServers": {
"garu": {
"command": "npx",
"args": ["-y", "--package=@garuhq/mcp@latest", "garu-mcp"],
"env": {
"GARU_API_KEY": "sk_live_xxx"
}
}
}
}VS Code
Add to .vscode/mcp.json:
{
"mcpServers": {
"garu": {
"command": "npx",
"args": ["-y", "--package=@garuhq/mcp@latest", "garu-mcp"],
"env": {
"GARU_API_KEY": "sk_live_xxx"
}
}
}
}Claude Desktop
Open Claude Desktop settings > "Developer" tab > "Edit Config".
{
"mcpServers": {
"garu": {
"command": "npx",
"args": ["-y", "--package=@garuhq/mcp@latest", "garu-mcp"],
"env": {
"GARU_API_KEY": "sk_live_xxx"
}
}
}
}Codex
codex mcp add garu --env GARU_API_KEY=sk_live_xxx -- npx -y --package=@garuhq/mcp@latest garu-mcpTools
Products (5 tools)
Tool | Description |
| List your seller's products with pagination and search. Each product carries the |
| Get a single product by UUID — the identifier accepted by the charge tools. |
| Read per-product portal customization (B2B2C). Returns |
| Upsert with merge: only fields provided are written. Pass |
| Remove the per-product config; product falls back to seller-level config |
Portal-config tools accept
productIdas either the product UUID (preferred — same id returned bylist_products) or the legacy numeric id. UUID support added in Garu v0.10.0.Use
list_productsto discover the UUID you'll pass tocreate_pix_chargeorcreate_boleto_charge.Per-product portal config is the B2B2C primitive: SaaS that models professionals/coaches/instructors as Products under one Seller can give each one custom branding (
businessName,primaryColor,logoUrl) and policies on the customer payment page +/minha-areaportal — all without fragmenting the seller's accounting.
Charges (5 tools)
Tool | Description |
| Create a PIX charge with QR code |
| Create a boleto bancário charge |
| List charges with pagination and filters |
| Get charge details by uuid (includes |
| Refund a charge (full or partial, amount in reais) |
| Cancel an unpaid charge by uuid |
Customers (6 tools)
Tool | Description |
| Create a customer linked to your seller account |
| List customers with search and pagination |
| Get customer details by uuid |
| Update customer information |
| Remove customer from your seller account |
| Override the billing-email used for that customer |
Scheduled charges (13 tools)
Bill an existing customer on a future date — one-time or recurring with card tokenization or Pix Automático (BACEN auto-debit recurring Pix; recurring + productId only).
Tool | Description |
| Schedule a future charge. |
| Paginated list with filters by status, type, due-date range, customer |
| Detail bundle: charge + event timeline + linked transactions |
| Mark a cycle paid (off-Garu reconciliation) |
| Force-bill the current cycle now instead of waiting for the due date (same dispatch as the daily cron). Idempotent — reports |
| Move next due date forward |
| Suspend / re-enable a series |
| Hard-stop future cycles (recurring only) |
| Stripe-style soft-cancel; reversible |
| Swap the saved card |
| Remove saved card; future cycles email-with-link |
| Per-attempt billing log (v0.8.2). Each row carries the canonical |
Resources
garu://docs/quickstart— Getting started guidegaru://docs/openapi— Link to the OpenAPI spec
Environment Variables
GARU_API_KEY— Your Garu API key (required). Get yours at garu.com.br.
Local Development
Clone and build:
git clone https://github.com/Garu-Pagamentos/garu-mcp.git
npm install
npm run buildTo use the local build, replace the
npxcommand with the path to your local build:
Claude Code:
claude mcp add garu -e GARU_API_KEY=sk_live_xxx -- node /absolute/path/to/garu-mcp/dist/index.jsCursor / VS Code / Windsurf / Claude Desktop:
{
"mcpServers": {
"garu": {
"command": "node",
"args": ["/absolute/path/to/garu-mcp/dist/index.js"],
"env": {
"GARU_API_KEY": "sk_live_xxx"
}
}
}
}Run tests:
npm testLicense
MIT
Available Tools
37 toolscancel_chargeB
Cancel an unpaid charge by its uuid.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Charge uuid to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only says 'Cancel,' implying a mutation, but does not disclose side effects (e.g., irreversibility), required permissions, or idempotency. The behavior is minimally implied but not explicitly stated.
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 a single, concise sentence with no superfluous words. It front-loads the purpose and is efficiently structured.
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 simple tool (one parameter, no output schema), the description covers the basic action. However, it lacks behavioral and usage context, which would be helpful for a cancellation operation. It is minimally complete.
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 input schema has 100% coverage with a clear description for the 'uuid' parameter. The description merely restates that the charge is canceled via its uuid, adding no new semantics beyond the schema. 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 action ('Cancel'), the target ('unpaid charge'), and the identifier ('uuid'). It distinguishes the tool from siblings like 'refund_charge' (for paid charges) and 'list_charges' (for listing), though it does not explicitly contrast them.
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?
No guidance on when to use this tool versus alternatives (e.g., refund_charge) or when not to use it. No context about prerequisites, constraints, or preconditions like requiring the charge to be unpaid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_recurrence_scheduled_chargeA
Stop future cycles for a recurring scheduled charge. The currently in-flight cycle (if any) remains active until paid, postponed, or marked-paid; only after that resolves does the series flip to recurrence_canceled. Final — use a new series to restart. Recurring-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID | |
| reason | No | Free-form reason for the audit log |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: in-flight cycle continues, series flips to recurrence_canceled after resolution, and tool is recurring-only. Without annotations, this provides valuable behavioral context beyond the schema.
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?
Three concise sentences, front-loaded with main action. No wasted words; every sentence adds value.
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?
Covers core behavior but lacks error conditions, prerequisites (e.g., charge must be recurring and not already canceled), and return value (no output schema). Adequate but not fully comprehensive.
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 descriptions for both id and reason. Description adds no additional semantic detail beyond what the schema already provides, so 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?
Description clearly states verb (stop future cycles) and resource (recurring scheduled charge). The phrase 'Final — use a new series to restart' and 'Recurring-only' distinguishes it from siblings like pause_scheduled_charge or set_cancel_at_period_end.
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?
Explains that in-flight cycle remains active until resolved, providing timing context. The 'Final' remark implies permanent cancellation, but does not explicitly compare to alternatives like pause_scheduled_charge or set_cancel_at_period_end.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_scheduled_charge_payment_methodA
Swap the saved card on a recurring series. The new PaymentMethod must belong to the same customerId. Future cycles silent-charge the new card; the in-flight cycle is not retroactively rebound.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID | |
| paymentMethodId | Yes | PaymentMethod id to bind. Must belong to the same customerId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully covers behavioral traits: it describes the swap action, the customerId constraint, and the differential treatment of future vs. in-flight cycles entirely. No contradictions present.
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 two sentences long, front-loaded with the primary action, and every sentence adds value. No unnecessary words or repetition.
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 two parameters and no output schema, the description fully covers what the tool does, its constraints, and its effect on different cycles. No gaps are evident.
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 description adds meaning beyond the input schema by explaining the overall action ('swap') and the behavioral effects on future and current cycles. While the schema covers the parameters adequately, the description provides context that is not present in the schema.
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 'Swap the saved card on a recurring series', using a specific verb and resource that clearly distinguishes it from sibling tools like 'clear_scheduled_charge_payment_method' which removes the payment method.
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 provides clear context on when to use the tool by specifying constraints ('must belong to the same customerId') and behavioral effects on future and in-flight cycles. However, it does not explicitly contrast with alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
charge_now_scheduled_chargeA
Force-bill the current cycle right now instead of waiting for its due date. Runs the same dispatch the daily billing cron would: customer email/notification + outbound webhook + timeline event. Allowed only from a billable status (scheduled / due_today); a recurring series must also have an open cycle (otherwise the gateway returns 400). IDEMPOTENT — NOT a re-charge: if this cycle's d-day was already dispatched it reports outcome 'already_sent' and does nothing, so retries are safe and never double-bill. Read the returned outcome ('dispatched' | 'already_sent' | 'not_sent' | 'failed'), the optional reason (e.g. no_email, no_saved_payment_method, card_expired, or a gateway decline code), and the pt-BR message to decide what to tell the user.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: idempotency (not a re-charge), outcome 'already_sent' prevents double-billing, and the actions performed (email, webhook, timeline event). It also lists possible outcomes and reasons, providing complete transparency.
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 main action and each sentence adds value. While it is dense, it is not overly verbose for the amount of information conveyed. A slight trim could improve conciseness, but it remains efficient.
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 no output schema, the description thoroughly explains the return values (outcome, reason, message), prerequisites (billable status), and side effects. It covers all necessary context for an agent to use the tool correctly.
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 covers 100% of parameters with a description for 'id'. The tool description does not add additional meaning beyond what the schema provides, hence baseline score of 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 force-bills the current cycle immediately, using specific verbs ('force-bill') and resource ('current cycle'). It distinguishes from sibling tools like postpone_scheduled_charge and pause_scheduled_charge by highlighting its unique function of immediate billing.
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 allowed statuses ('scheduled / due_today') and the requirement for an open cycle in recurring series. It also explains when it does nothing (if already dispatched) and that retries are safe. However, it does not explicitly mention when not to use it or provide alternative tools, but the conditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_product_portal_configA
Remove the per-product portal customization. The product falls back to the seller-level portal config. Returns { removed: true } when a row was deleted, { removed: false } when there was nothing to remove.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product identifier — accepts the UUID (preferred — same id returned by list_products and webhook payloads) or the legacy positive integer id. UUID support added in Garu v0.10.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the full burden. It explains that the product falls back to seller-level config, and specifies the return values for both deletion and no-op cases. This adequately discloses 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 consists of two short, front-loaded sentences. Every sentence adds value with no redundant or extraneous information. Excellent conciseness.
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 there is only one parameter, no output schema, and no annotations, the description covers the core operation, fallback behavior, and return values. It lacks explicit mention of error conditions or permissions, but is mostly complete for a simple deletion 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?
There is only one parameter (productId), and the schema description already covers its accepted formats (UUID or legacy integer) with 100% coverage. The tool description does not add additional meaning beyond what the schema provides, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and the resource 'per-product portal customization', and explains the fallback behavior. This distinguishes it from sibling tools like get_product_portal_config and set_product_portal_config.
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 implies the tool is used to reset customization, but it does not explicitly state when to use it versus alternatives, nor mention when not to use it. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_scheduled_charge_payment_methodA
Clear the saved card on a recurring series. Future cycles fall back to the email-with-link flow so the customer can re-enter card details or pay via PIX/Boleto.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It discloses a key behavioral effect (future cycles fall back to email-link flow), but omits expected side effects, permission requirements, or reversibility. Reasonable but not exhaustive.
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?
Two concise sentences, no wasted words. The core action and consequence are presented upfront. Ideal length for a simple tool.
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 no output schema and simple input, the description adequately explains the tool's purpose and fallout. However, it lacks detail on response format or error handling, which would be expected for a mutation 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?
With 100% schema coverage, the description adds no further detail about the 'id' parameter beyond what the schema already provides. It correctly implies which entity is affected but does not enrich parameter semantics.
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 verb 'clear' and the resource 'saved card on a recurring series'. It distinguishes from sibling tools like 'change_scheduled_charge_payment_method' by focusing on removal vs modification.
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 implies usage for removing a saved card to allow fallback flows, but does not explicitly state when to use vs alternatives (e.g., 'change_scheduled_charge_payment_method'), nor does it mention prerequisites or contraindications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_boleto_chargeB
Create a boleto bancario charge. Returns a bank slip line for payment.
| Name | Required | Description | Default |
|---|---|---|---|
| customer | Yes | ||
| productId | Yes | Product UUID | |
| additionalInfo | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states that a bank slip line is returned but fails to disclose whether the charge is immediately created, how payment confirmation works, authentication needs, or error scenarios. For a creation tool, these gaps are significant.
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 very concise at two sentences. However, it omits important context about parameters and behavior, making it less valuable than it could be while still being brief.
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?
With no output schema and minimal annotations, the description provides only the barest outline. It explains the return value but not how to use the return or handle errors. For a tool with 3 parameters and a nested object, completeness is lacking.
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 only 33%, and the description adds no parameter guidance beyond what the schema provides. Many fields in the nested customer object lack descriptions, and the tool's purpose does not explain how parameters like productId or additionalInfo affect the charge.
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 identifies the tool as creating a boleto bancario charge and distinguishes it from siblings like create_pix_charge or scheduled charge operations. The verb 'create' and resource 'boleto bancario charge' are 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?
No explicit guidance on when to use this tool versus alternatives. While the name and description imply it's for boleto payments, there is no mention of prerequisites, exclusions, or comparison to similar tools like create_pix_charge or scheduled charges.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_customerC
Create a customer and link to the current seller.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| name | Yes | Customer full name | |
| Yes | Customer email | ||
| phone | Yes | Phone with area code, 10-11 digits | |
| state | No | 2-letter state code, e.g. SP | |
| number | No | ||
| street | No | ||
| zipCode | No | ZIP code, 8 digits | |
| document | Yes | CPF (11 digits) or CNPJ (14 digits) | |
| complement | No | ||
| personType | Yes | Person type | |
| neighborhood | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states creation and linking, but omits side effects, authentication needs, idempotency, or error behavior. The lack of detail is a significant gap for a tool with 12 parameters.
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 very concise (one sentence), but it lacks structure and fails to provide necessary context. While brevity is positive, it sacrifices completeness.
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 complexity (12 parameters, no output schema, no annotations), the description is severely incomplete. It does not explain return format, validation rules, error handling, or relationship with other objects (e.g., seller context). The agent would lack critical information for correct invocation.
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 58%, meaning some parameters already have descriptions. However, the tool description adds no additional semantic meaning, such as interdependencies, format constraints beyond the schema, or which parameters are required. It does not compensate for the 42% of parameters lacking schema descriptions.
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 action (create) and the resource (customer), and adds the context of linking to the current seller. This distinguishes it from siblings like update_customer or get_customer, though the seller linking is not further explained.
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?
No guidance is provided on when to use this tool versus alternatives such as update_customer or list_customers. The description does not mention prerequisites or scenarios where creation is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pix_chargeA
Create a PIX charge. Returns a QR code for the customer to pay.
| Name | Required | Description | Default |
|---|---|---|---|
| customer | Yes | ||
| productId | Yes | Product UUID | |
| additionalInfo | No | Free-form metadata |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It mentions that a QR code is returned, but it does not disclose side effects (e.g., idempotency, rate limits, required authentication), or any destructive potential inherent in creating a charge. The description is insufficient for a tool with no 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 extremely concise: two sentences that state the purpose and key output. It is front-loaded and contains no filler. Every word is meaningful and earns its place, making it easy for an AI agent to quickly understand the tool's function.
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?
No output schema is provided, so the description must explain the return value. It mentions the QR code but does not describe the overall charge object returned (e.g., charge ID, status). Given the tool creates a charge, additional details about the response structure would improve completeness, but the description covers the primary output.
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 schema description coverage at 67%, the baseline is 3. The description adds no information about parameters beyond what the schema already provides. It does not explain the purpose of productId or customer, nor does it clarify the structure of the customer object. The schema covers most parameter details, so the description does not detract but also does not add value.
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 verb 'Create' and the resource 'PIX charge', which immediately distinguishes it from sibling tools like create_boleto_charge that create a different payment method. It also specifies that it returns a QR code, adding valuable context about the tool's outcome.
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 does not explicitly state when to use this tool versus alternatives like create_boleto_charge. It implies usage when a PIX charge is desired, but lacks guidance on prerequisites or situations where this tool should not be used. The name and context provide some differentiation, but explicit guidelines are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_productA
Create a product for the authenticated seller. Returns the created product, whose UUID is the same identifier accepted by create_pix_charge / create_boleto_charge. value is in decimal BRL / reais (e.g. 29.90), NOT centavos. Setting pixAutomatic: true exposes Pix Automático (BACEN auto-debit recurring Pix) on the subscription checkout. Pass idempotencyKey to make a retry across process restarts safe — the backend returns the original product instead of creating a duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| pix | No | Offer PIX at checkout. | |
| name | Yes | Product name (required). | |
| tags | No | Free-form tags. | |
| image | No | HTTPS URL of the product cover image. | |
| value | No | Price in decimal BRL / reais (e.g. R$29,90 → 29.90) — NOT centavos. Products store the price in reais, the same as the API and dashboard. | |
| boleto | No | Offer Boleto at checkout. | |
| returnUrl | No | URL the buyer returns to after a successful payment. | |
| unitLabel | No | Per-unit label shown on the checkout (e.g. 'seat'). | |
| creditCard | No | Offer credit card at checkout. | |
| description | No | Product description. | |
| installments | No | Max number of installments offered on credit card. | |
| pixAutomatic | No | When true, exposes Pix Automático (BACEN auto-debit recurring Pix) on the subscription checkout. Only the subscription checkout mode reads it. | |
| idempotencyKey | No | Idempotency key for safe retries. Defaults to a generated UUIDv4. | |
| isSubscription | No | Mark the product as a subscription (recurring). | |
| subscriptionType | No | Subscription cadence label (e.g. 'monthly'). | |
| returnUrlButtonText | No | Label for the return-URL button on the success page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explains key behaviors: the product UUID is reused by other charges, value is in decimal BRL, pixAutomatic only affects subscription checkouts, and idempotency key ensures safe retries. It does not mention permissions or error handling.
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 a single dense paragraph but is front-loaded with purpose and efficiently conveys key points. It could benefit from slight restructuring (e.g., bullet points for clarity), but every sentence adds value.
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 16 parameters (all documented in schema) and no output schema, the description covers critical behavioral details like value units and idempotency. It does not describe return structure or error conditions, but these are secondary to the main purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds value by explaining the value unit (decimal BRL), the subscription-specific use of pixAutomatic, and the retry safety of idempotencyKey, which are not obvious from schema descriptions 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 'Create a product for the authenticated seller', specifying the action and target. It distinguishes from siblings like create_pix_charge and create_boleto_charge by focusing on product creation.
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 provides clear context for when to use the tool, including value format, idempotency, and pixAutomatic behavior. However, it does not explicitly state when NOT to use it or list alternative tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scheduled_chargeA
Schedule a future charge for an existing customer. Use list_customers first to find the customerId. type='one_time' is the simple case (PIX/Boleto). type='recurring' takes a recurrence config and silent-charges the saved card on every cycle past the first. Card method is recurring-only and requires productId. Pix Automático (methods: ['pix_automatic']) is BACEN auto-debit recurring Pix — the customer authorizes once and later cycles debit silently; it is recurring-only and requires productId. Optional trialDays (1..365, recurring-only) rebases cycle 1 to today + N days and emits customer.trial_started immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Schedule type. 'recurring' requires a recurrence block; 'one_time' must omit it. | |
| amount | Yes | Decimal BRL (e.g. 297.50). Always pass decimals, never centavos. | |
| dueDate | Yes | YYYY-MM-DD in São Paulo time. Must be today or future. | |
| methods | Yes | Payment methods to offer. 'card' is recurring-only and requires productId. 'pix_automatic' is Pix Automático (BACEN auto-debit recurring Pix): the customer authorizes once, then later cycles debit silently — only valid when type='recurring' and productId is set. | |
| metadata | No | Free-form JSON. Stored as JSONB; not interpreted by Garu. | |
| productId | No | Required when methods includes 'card' or 'pix_automatic'. Optional otherwise. | |
| trialDays | No | Free-trial duration in days (1..365). Recurring-only. When set, cycle 1 is rebased to today + N days and customer.trial_started fires immediately. | |
| customerId | Yes | Customer ID (must already be linked to the seller) | |
| recurrence | No | Cadence for type='recurring'. endsAfter and endsOn are mutually exclusive. | |
| description | No | Free-form text shown on the customer email and payment page | |
| maxRecoveryDays | No | Max days past dueDate the daily recovery sweep will still auto-bill a missed charge (1..365). Omit for the system default (14). | |
| externalReference | No | Seller-controlled identifier (deduping, reconciliation). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It explains mutation (schedules charge), silent charges for recurring, trialDays rebasing cycle, and recovery sweep. Lacks mention of webhook events or idempotency but is sufficient.
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?
Long but information-dense description. Front-loaded with purpose. Could benefit from bullet points or clearer separation of scenarios, but remains effective and avoids redundancy.
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?
With 12 parameters, complex logic (recurring vs one_time, multiple methods), and no output schema, description covers many nuances (trialDays, recovery, silent charges). Does not explicitly mention return value, but sufficiently complete for agent invocation.
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% (baseline 3). Description adds value by linking methods to type (e.g., 'pix_automatic' is recurring-only), explaining trialDays behavior, and clarifying productId requirement. Goes beyond schema.
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?
Description explicitly states 'Schedule a future charge for an existing customer' with clear differentiation between one_time and recurring types, and references sibling tool list_customers.
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 guidance to use list_customers first, explains when each payment method (pix, boleto, card, pix_automatic) is appropriate, and clarifies constraints like 'Card method is recurring-only'. Does not explicitly enumerate when not to use but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_customerA
Remove a customer from the current seller. Does not delete the customer globally.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Customer ID to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the deletion is scoped to the current seller, which is key. However, it lacks details on side effects (e.g., impact on associated data), reversibility, or prerequisites. The minimal disclosure is adequate for a simple action but could be more comprehensive.
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?
Two sentences, zero waste. The key point is front-loaded and the clarification is in the second sentence. Every word earns its place.
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 simplicity of the tool (single parameter, no output schema), the description provides the essential scope distinction. It could mention irreversibility or effect on related data, but for a straightforward deletion tool, it is largely complete.
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 already describes the 'id' parameter as 'Customer ID to remove' (100% coverage). The description adds no additional meaning beyond the schema, so it is neither deficient nor additive.
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 action ('Remove a customer') and resource ('from the current seller'), distinguishing it from a global delete. This provides a specific and unambiguous 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?
The description implies that this tool should be used for local removal only and not for global deletion. While it provides useful context, it does not explicitly state when not to use it or mention alternatives, but the inference is clear given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chargeA
Get details of a specific charge by its uuid.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Charge uuid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only operation (get details), but with no annotations, it does not provide additional behavioral context such as authentication requirements, rate limits, or what 'details' include. It is adequate for a simple retrieval but lacks depth.
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 a single clear sentence with no unnecessary words. It is front-loaded with the purpose and fits within a line.
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 is a simple retrieval with one parameter and no output schema, the description is minimally adequate. It does not specify return fields, error handling, or pagination, leaving some gaps for an agent to infer.
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 uuid described as 'Charge uuid'. The description adds 'by its uuid', which is redundant with the schema. No additional parameter semantics are provided, so baseline score of 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 retrieves details of a specific charge by its uuid, with a specific verb (get) and resource (charge). It distinguishes from sibling tools like list_charges (lists multiple), cancel_charge (cancels), and refund_charge (refunds).
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?
No guidance on when to use this tool versus alternatives like list_charges or other charge retrieval tools. The description implies it's for a single charge by UUID but does not explain when to prefer it over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customerA
Get details of a specific customer by numeric ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Customer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral disclosure. States it returns 'details' but doesn't mention side effects (none expected) or specific behaviors like idempotency or caching. Adequate for a simple read, but not rich.
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?
Single sentence with no unnecessary words. Front-loaded with verb and resource. Every word adds value.
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?
No output schema, yet description doesn't explain what 'details' are returned. For a get tool, knowing the structure or field list is helpful. Other get tools in siblings might have similar gaps, but this tool could benefit from a brief summary of response fields.
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 one parameter. Description adds that ID is 'numeric', aligning with schema type number. No additional meaning beyond schema. 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?
Description clearly states verb 'Get', resource 'details of a specific customer', and key constraint 'by numeric ID'. It distinguishes from siblings like list_customers (multiple customers) and update_customer (update operation).
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?
No explicit when-to-use or when-not-to-use guidance. Implies usage for fetching a known customer by ID, but lacks comparison with alternatives like list_customers or update_customer. Context signals show many customer-related tools; description could mention when to use this vs others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_setupA
Return the steps and dashboard URLs an agent needs to integrate an application with Garu: where to create an API key, where to register a webhook endpoint, and how to verify webhook signatures with the SDK. Garu does not expose programmatic endpoints for these — both have to be done in the dashboard at https://garu.com.br/configuracoes/desenvolvedores. Call this whenever the user asks how to wire up Garu in their app, set up the API key, or receive webhooks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description discloses key behavioral traits: Garu has no programmatic endpoints for these actions, so the tool only returns instructions and URLs. It also mentions the SDK for signature verification.
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 concise yet comprehensive, with every sentence providing value. It front-loads the purpose and includes usage guidance without unnecessary detail.
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 no parameters and no output schema, the description is complete. It covers the tool's purpose, usage context, and limitations, making it fully self-contained for an agent.
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?
No parameters exist, and schema coverage is 100% (since there are none). The description adds meaningful context about what the tool returns, fulfilling the baseline expectation.
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 what the tool does: return integration steps and dashboard URLs for setting up API keys, webhooks, and signature verification. It distinguishes itself from sibling tools that deal with charges and customers.
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 specifies when to call this tool: 'whenever the user asks how to wire up Garu in their app, set up the API key, or receive webhooks.' No alternative tools are mentioned, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productA
Get details of a specific product by UUID. Use this to inspect a product before creating a charge. The pixAutomatic boolean indicates whether Pix Automático (BACEN auto-debit recurring Pix) is enabled on the public subscription checkout for this product.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Product UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so description carries full burden. Describes the operation as retrieving details and explains the 'pixAutomatic' field, but does not explicitly state that it is a read-only operation or discuss any side effects, permissions, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states purpose, the second provides usage guidance and a notable field explanation. Well front-loaded and efficient.
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 low complexity (one parameter, no output schema), the description adequately covers purpose, usage context, and a key field. Could briefly mention the return type (product object) but is otherwise complete for a simple retrieval 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 has 100% coverage for the single uuid parameter. The description adds meaningful context by explaining the purpose ('inspect before charge') and describing the 'pixAutomatic' boolean, which goes beyond the schema's brief 'Product UUID' 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 'Get details of a specific product by UUID', providing a specific verb ('get') and resource ('product'). Distinguishes from siblings like list_products and get_product_portal_config by focusing on a single product retrieval.
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 advises using this tool before creating a charge, giving a concrete use case. Does not explicitly mention when not to use it or alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_portal_configA
Get the per-product portal customization (business name, logo, primary color, cancellation policy, custom welcome / success / cancellation messages). Returns null when no per-product config exists — the product falls back to the seller-level portal config. Used by B2B2C platforms that model their professionals/coaches as Products under a single seller.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product identifier — accepts the UUID (preferred — same id returned by list_products and webhook payloads) or the legacy positive integer id. UUID support added in Garu v0.10.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear full responsibility. It discloses the null return and fallback behavior, which is the key behavioral trait. For a simple read operation, this is sufficient. No side effects or authorization needs are mentioned, but that is typical for getters.
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?
Two sentences: first states what the tool retrieves, second explains null behavior and use case. No filler, every sentence adds value. Well 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 the single parameter with thorough schema documentation, the description adequately covers the null return and context. Lacks explanation for invalid IDs or error scenarios, but for a simple getter this is acceptable.
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 a detailed description of the productId parameter (UUID vs legacy, version info). The description adds no additional meaning beyond what the schema provides, so 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 'Get the per-product portal customization' and lists specific fields (business name, logo, etc.). It distinguishes from siblings like set_product_portal_config and clear_product_portal_config by being the retrieval counterpart. The B2B2C use case is mentioned, 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 explains the null return behavior and fallback to seller-level config, giving context on when to expect values. It also notes the intended audience (B2B2C platforms). However, it does not explicitly state when not to use this tool or suggest alternatives, but the context implies it's the primary getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scheduled_chargeA
Get a scheduled charge by ID, bundled with its event timeline and any linked Garu transactions. The response shape is { charge, events, transactions }. Unit caveat: charge.amount is decimal BRL (e.g. 297.50) but transactions[].value is centavos (BRL × 100, e.g. 29750). Convert before comparing.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID, e.g. sch_abc123 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses the response shape and a crucial unit conversion caveat (charge.amount in BRL decimal vs transactions[].value in centavos), aiding correct interpretation.
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?
Two efficient sentences: the first states purpose and response shape, the second provides a critical unit caveat. No redundant 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 simple tool (one param, no output schema), the description covers purpose, response structure, and an important unit conversion. It could mention possible error conditions, but for a read operation this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes 'id' as a string. The description adds an example ('sch_abc123') but no additional meaning beyond that.
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 action (Get), the resource (a scheduled charge by ID), and specifies the response includes event timeline and linked Garu transactions, distinguishing it from siblings like list_scheduled_charges.
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 implies usage for retrieving a single scheduled charge with full details, but does not explicitly state when not to use it or provide direct comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhook_eventA
Fetch one webhook event by numeric id. Returns the full payload, the embedded endpoint snapshot, the most recent response status/body, and the retry schedule. Use this to drill into why a delivery is failing.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook event id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the returned data (payload, snapshot, response, retry schedule) but does not mention behavior details like error handling, required permissions, or idempotency. For a simple read operation, the description is adequate but not rich.
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 two sentences with zero waste: the first states the action and returns, the second provides a clear usage case. It is efficiently 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?
For a single-parameter fetch tool without output schema, the description lists all expected return components (payload, snapshot, response, retry schedule). The sibling context (list and retry) supports its role. Some missing context like pagination or error states, but overall complete enough.
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% (only one parameter 'id' with description). The description adds minimal value beyond 'by numeric id,' not elaborating on the id's meaning or format. Baseline 3 is appropriate as the schema already documents the parameter sufficiently.
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 'Fetch one webhook event by numeric id,' providing a specific verb and resource. It further details the return values (full payload, endpoint snapshot, response status/body, retry schedule), clearly distinguishing it from sibling tools like list_webhook_events (list) and retry_webhook_event (retry).
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 ends with 'Use this to drill into why a delivery is failing,' explicitly stating when to use the tool (investigating delivery failures). However, it does not mention when not to use it or explicitly compare to alternatives, though the sibling list suggests retry_webhook_event as a follow-up.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chargesA
List charges for the authenticated seller with pagination and filters.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, default 1 | |
| limit | No | Items per page, default 20 | |
| search | No | Search by customer name, email, or document | |
| status | No | Filter by status: pending, authorized, paid, failed, refunded, etc. | |
| productId | No | Filter by product UUID | |
| paymentMethod | No | Filter: pix, boleto, creditCard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states pagination and filters but does not disclose read-only behavior, performance implications, or authentication requirements beyond 'authenticated seller'.
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?
A single, well-structured sentence that is front-loaded and contains no extraneous information. Every word contributes to understanding.
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, no output schema, and no annotations, the description omits details about return format, sorting, or pagination metadata. It provides a basic understanding but leaves operational 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 input schema covers all 6 parameters with descriptions (100% coverage). The description adds no new meaning beyond the phrase 'pagination and filters,' which summarizes existing schema details.
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 specifies the action (list), resource (charges), and scope (authenticated seller with pagination and filters). It effectively distinguishes from sibling tools like get_charge or create_charge.
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 implies usage for listing charges but provides no explicit guidance on when to use this tool versus alternatives such as list_scheduled_charges or list_customers. No exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customersA
List customers for the authenticated seller with pagination, search, and an optional 'overdue' filter that surfaces customers with at least one overdue scheduled charge.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, default 1 | |
| limit | No | Items per page, default 20 | |
| search | No | Search by name, email, or document | |
| status | No | Filter to customers with at least one overdue scheduled charge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses pagination, search, and the overdue filter, which are key behavioral traits. It implies read-only operation, which is consistent. However, it omits details like default sorting or output structure.
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 a single, well-structured sentence that front-loads the action and includes all key aspects (pagination, search, overdue filter) without any redundant or unnecessary 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 lack of annotations and output schema, the description adequately covers the tool's purpose and key features. It is sufficiently complete for a simple listing tool with well-documented schema parameters, but could benefit from mentioning output format or ordering.
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% (all 4 parameters are described in the schema). The description reinforces these features but does not add semantic meaning beyond what is already in the schema, justifying the baseline score of 3.
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 verb 'List' and the resource 'customers' for the authenticated seller, and highlights the key features: pagination, search, and an optional 'overdue' filter. This is specific and distinguishes from sibling tools like get_customer.
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 implies usage for listing customers with optional filters, but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsA
List products for the authenticated seller with pagination and search. The UUID returned for each product is the same identifier accepted by create_pix_charge and create_boleto_charge. Each product also carries a pixAutomatic boolean — when true, Pix Automático (BACEN auto-debit recurring Pix) is offered on the public subscription checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | Deprecated — ignored by the v1 API. list returns the authenticated seller's own products. | |
| page | No | Page number, default 1 | |
| limit | No | Items per page, default 20 | |
| search | No | Search by product name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It implies a read-only operation but does not explicitly state it. It adds useful context about UUID and pixAutomatic, but omits side effects or limits.
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?
Two efficient sentences, no wasted words. First sentence captures main purpose; second adds valuable return context.
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 4 simple parameters, no output schema, and no nested objects, the description is sufficiently complete. It explains pagination and search, and adds context about UUID and pixAutomatic.
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 extra meaning beyond the schema by explaining that the returned UUID is used in charge creation and that pixAutomatic indicates Pix Automático availability.
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 lists products for the authenticated seller, with pagination and search. It identifies the verb and resource, but does not explicitly differentiate from other product-related sibling tools like get_product or create_product.
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?
No guidance is provided on when to use this tool versus alternatives. It mentions UUIDs used by create_pix_charge and create_boleto_charge, but not when to prefer list_products over get_product or list_charges.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduled_charge_attemptsA
Per-attempt billing log for a scheduled charge series (SPEC §4.2). One row per logical billing event: cycle 1 interactive charge, every silent-charge attempt, every retry cron retry, every manual mark-paid. Each row carries the canonical Garu failureCode for declines, the gateway raw code for forensics, and a snapshot of the card last4 / brand even after the PaymentMethod is deleted (LGPD survival). Use this to audit why a recurring series fell behind.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID (the series id) | |
| page | No | Default 1 | |
| limit | No | Default 20, max 100 | |
| cycleNumber | No | Filter to a single cycle. Default returns attempts across all cycles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: each row carries 'canonical Garu failureCode', 'gateway raw code', and 'snapshot of the card last4 / brand even after the PaymentMethod is deleted (LGPD survival)'. This reveals data retention beyond deletion, which is critical. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3-4 sentences) and front-loaded with the core purpose. Each sentence adds value, covering what the tool is, what each row contains, and usage. No unnecessary 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?
Despite having no output schema, the description lists key fields (failureCode, gateway raw code, last4/brand) that will be returned. However, it lacks information on pagination behavior or default ordering, which would be helpful for a list tool. The description is adequate but not fully complete.
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 does not add significant semantics beyond the schema; it mentions filtering by cycle but does not elaborate on id, page, or limit. The value added is minimal.
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 specifies the tool as a 'per-attempt billing log for a scheduled charge series' and lists the types of events recorded (cycle charges, silent-charge attempts, retries, manual mark-paid). This clearly distinguishes it from sibling tools like 'list_scheduled_charges' which list series, not attempts.
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 states 'Use this to audit why a recurring series fell behind,' providing clear context for when to use the tool. It does not explicitly list when not to use it or compare to alternatives, but the purpose is well-defined and the usage guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduled_chargesA
List scheduled charges for the authenticated seller, with pagination and filters. Pass status as a single value or an array. Use search to match against the linked customer's name, email, or document.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, default 1 | |
| type | No | Filter by schedule type | |
| dueTo | No | YYYY-MM-DD upper bound for dueDate | |
| limit | No | Items per page, default 20 | |
| search | No | Free-text search across customer name, email, or document | |
| status | No | Filter by status. Single value or array. Common values: scheduled, due_today, overdue, paid, paused. | |
| dueFrom | No | YYYY-MM-DD lower bound for dueDate | |
| customerId | No | Filter by a single customer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It implicitly indicates a read operation by saying 'list', but does not explicitly state it is read-only, nor mention authentication or rate limits. It adds some context about search capabilities but omits safety guarantees.
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 two sentences long, front-loaded with the core purpose, and every sentence adds value. No unnecessary words or fluff.
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 list tool with no output schema, the description covers the main functionality (pagination, filters, search) and parameters are fully documented in the schema. It could mention the response structure (e.g., contains array of scheduled charges) but is largely complete.
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 baseline is 3. The description repeats information already in the schema (e.g., status can be array, search matches customer fields) but adds no new semantic meaning beyond what the schema provides.
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 verb 'list' and the resource 'scheduled charges for the authenticated seller', with filters and pagination. This distinguishes it from sibling list tools like list_charges or list_customers.
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 provides some usage hints (pass status as array, use search for customer fields) but does not explicitly compare to alternative tools or state when not to use this tool. It lacks explicit when-to-use guidance relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhook_eventsA
List webhook events for the authenticated seller. Filter by delivery status (pending, success, failed), by Garu event type (e.g. 'transaction.payment.paid'), and/or by the destination endpoint id. Use this to audit deliveries — the canonical 'did my customer's endpoint actually receive event X?' workflow. Newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, default 1 | |
| limit | No | Items per page, default 50 | |
| status | No | Filter by delivery state. 'pending' = queued/awaiting retry; 'success' = endpoint returned 2xx; 'failed' = retries exhausted. | |
| event_type | No | Filter by Garu event type, e.g. 'transaction.payment.paid' or 'scheduled_charge.cycle_failed'. | |
| endpoint_id | No | Filter by destination endpoint id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses ordering ('Newest first') and explains filter options (status meanings, event type examples). Missing details on rate limits or pagination beyond order, but sufficient for common use.
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?
Three sentences: action+resource, filter options, use case+ordering. No unnecessary words, front-loaded with essential information.
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?
No output schema, so description should explain return values. It does not describe what fields are returned or pagination details beyond ordering. Adequate but lacks return structure.
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% (all parameters have descriptions). The description adds context by explaining the audit purpose and giving examples (e.g., event type 'transaction.payment.paid'). This adds value beyond the 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?
Clearly states the verb (list) and resource (webhook events) for the authenticated seller. Distinguishes from siblings like get_webhook_event (single) and retry/resend webhook event (actions).
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 use case: 'audit deliveries — the canonical 'did my customer's endpoint actually receive event X?' workflow.' Lists available filters, implying when to use each. However, no explicit exclusion criteria for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_paid_scheduled_chargeA
Manually mark a scheduled charge as paid (e.g. customer paid via bank transfer outside Garu). For one-time: omit cycleNumber, allowed from due_today / overdue. For recurring: pass cycleNumber, allowed from cycle status due_today / overdue / failed; future cycles continue.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID | |
| cycleNumber | No | Cycle to mark paid. REQUIRED for recurring schedules; omit for one-time. | |
| paymentDate | Yes | YYYY-MM-DD in São Paulo time. Must be today or past. | |
| externalReference | No | Bank reference, internal ID, or any stable string for reconciliation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses allowed statuses and that future cycles continue, but does not mention side effects, reversibility, or webhook implications. Adequate but could be more explicit.
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?
Two sentences, front-loaded with action and context. Every word earns its place; no fluff. Highly efficient.
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 complexity (one-time vs recurring, status conditions, 4 parameters), the description covers essentials for tool selection. No output schema needed due to simple nature. Could mention reversibility but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds value by explaining when cycleNumber is required vs. omitted, and paymentDate format constraint. ExternalReference is clarified. Adds nuance beyond schema.
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?
Description clearly states 'Manually mark a scheduled charge as paid' and differentiates between one-time and recurring usage, with specific conditions. This verb+resource+scope is precise and distinguishes from sibling tools.
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?
Description provides explicit scenarios: for one-time (omit cycleNumber) and recurring (pass cycleNumber) and allowed statuses (due_today, overdue, failed). It lacks alternative tool mentions but context is clear enough for agent decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_scheduled_chargeA
Pause a scheduled charge. No reminders fire while paused. Allowed from scheduled / due_today / overdue. Use resume_scheduled_charge to bring it back.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID | |
| reason | No | Free-form reason for the audit log |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adequately discloses behavioral consequences (suppression of reminders, status constraints). Lacks details on permissions or idempotency, but covers core traits.
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?
Three concise sentences, front-loaded with the core action, each sentence adding valuable context without redundancy.
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 simple mutation without output schema, the description covers key aspects: action, effects, allowed states, and reversal. Could mention if it's idempotent or returns state.
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 no extra meaning for parameters beyond what the schema already provides.
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 verb and resource ('Pause a scheduled charge') and distinguishes from siblings by mentioning 'resume_scheduled_charge' as the undo action.
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 ('Allowed from scheduled / due_today / overdue'), what happens ('No reminders fire while paused'), and directs to the alternative tool for resuming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postpone_scheduled_chargeA
Postpone a scheduled charge to a new due date. Allowed from scheduled / due_today / overdue / paused. Clears any pending dunning so the customer gets a fresh reminder on the new date.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID | |
| reason | No | Free-form reason for the audit log | |
| newDueDate | Yes | YYYY-MM-DD in São Paulo time. Must be today or future. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool clears pending dunning and triggers a fresh reminder on the new date, which are behavioral side effects. It does not mention authorization requirements or reversibility, but the disclosed actions are relevant.
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 two sentences, front-loads the primary action, and contains no fluff. Every sentence adds value: one for the core operation and one for behavioral context.
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?
The tool has no output schema and three parameters. The description covers the allowed input statuses and a side effect (dunning clear). It lacks information about return values or error handling, but for a simple mutation tool, it is reasonably complete.
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 descriptions for all three parameters (id, reason, newDueDate). The description does not add extra meaning beyond the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'postpone' and the resource 'scheduled charge' to a new due date. It explicitly lists allowed statuses (scheduled, due_today, overdue, paused), distinguishing it from sibling tools like pause, resume, mark_paid, etc.
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 specifies when this tool is applicable (allowed statuses) and mentions it clears pending dunning, but does not explicitly state when not to use it or provide direct alternatives. However, the siblings list gives implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refund_chargeA
Refund a charge fully or partially. Amount is in BRL / reais (e.g. 10.50 for R$10,50). For a Pix Automatico charge the refund is asynchronous: the charge returns as refund_pending and only reaches refunded once the transfer settles.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Charge uuid to refund | |
| amount | No | Partial refund amount in BRL / reais (e.g. 10.50). Omit for full refund. | |
| reason | No | Reason for the refund |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses asynchronous behavior for Pix Automatico and currency formatting, but lacks permissions, side effects, or failure modes.
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?
Three sentences, each essential: purpose, currency format, and special async behavior. No fluff, perfectly 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?
Adequate for a simple tool: covers purpose, currency, and async edge case. However, no mention of return value or error scenarios, which would improve completeness given no output schema.
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%, but description adds value by clarifying currency format (e.g., 10.50 for R$10,50) and that omitting amount means full refund, enhancing the schema's brief descriptions.
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 'Refund a charge fully or partially' with a specific verb and resource. It distinguishes from sibling tools like cancel_charge by focusing on refunds.
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?
Implied usage through purpose, but no explicit guidance on when to refund vs cancel or alternative tools. The asynchronous note for Pix Automatico provides context but no direct comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resend_webhook_eventA
Re-deliver a webhook event by id, audit-trail preserving. Inserts a fresh event (new numeric id) that points back at the source via manualResendOf, then dispatches that clone — the original row is left untouched, so its prior response status/body stays on the record. Works on any status (success, failed, pending). Returns the clone event; the returned id is the new event's id, NOT the source. The customer's webhook handler will see Idempotency-Key: resend_ on the delivery, and can distinguish a resend from the original by that prefix or by the payload's manualResendOf field. Prefer this over retry_webhook_event when a customer reports a missed or unprocessed event, or during a backfill — you want the original delivery outcome to remain on the record.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook event id of the source event to clone and resend |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description thoroughly discloses behavior: inserts clone, points to source, dispatches, leaves original untouched, returns clone's id, and Idempotency-Key details.
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?
Description is informative but slightly long; front-loaded with purpose and usage. Every sentence adds value, but could be tightened slightly.
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 no output schema or annotations, the description fully explains return value, effect on original, and Idempotency-Key. Complete for a single-parameter 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?
Parameter id is described in schema; description adds value by clarifying that the returned id is the clone's id, not the source's. Schema coverage 100%, baseline 3, with added context.
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 purpose: 'Re-deliver a webhook event by id, audit-trail preserving.' It distinguishes from sibling retry_webhook_event by specifying when to prefer this tool.
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 when-to-use guidance: 'Prefer this over retry_webhook_event when a customer reports a missed or unprocessed event, or during a backfill.' Also notes it works on any status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_scheduled_chargeA
Resume a paused scheduled charge. Only valid from paused.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the precondition ('only valid from paused') but no other behavioral traits like side effects, authentication needs, or rate limits. Adequate for a simple resumption action.
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?
Very concise: two short sentences that front-load the purpose and precondition. Every word adds value with no redundancy.
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 (1 parameter, no output schema), the description covers the essential information: what it does and when it's valid. No 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 has 100% coverage with one parameter 'id' described as 'Scheduled charge ID'. Description adds no extra meaning beyond the schema, so 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?
Clearly states the action 'Resume' and the resource 'scheduled charge', with a specific precondition 'Only valid from `paused`'. This distinguishes it well from sibling tools like `pause_scheduled_charge`.
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 says the tool is only valid when the scheduled charge is in the `paused` state, providing clear context for use. Does not explicitly mention alternatives or when not to use, but the precondition is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry_webhook_eventA
Re-deliver a webhook event by id. Resets it to 'pending' in place, clears the retry schedule, and triggers an immediate delivery attempt. Works on any status (success, failed, pending). For most cases prefer resend_webhook_event, which preserves the original event's audit trail by cloning instead of mutating — retry overwrites the historical response status/body on the source row. Kept for callers that explicitly want the legacy in-place semantics.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook event id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses: resets status to pending, clears retry schedule, triggers immediate attempt, works on any status, and overwrites historical response data. This is highly transparent about the destructive side effect.
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?
Three sentences, each serving a purpose: action, behavior details, and usage comparison. Front-loaded with main action, no fluff.
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?
Tool has one parameter, no output schema, and no annotations. Description fully covers the action, consequences, and alternatives. Nothing missing for an agent to understand when and how to use it.
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 a single integer 'id' parameter described as 'Webhook event id'. Description does not add extra semantics beyond the schema, but none are needed. Baseline score of 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?
Description clearly states the tool re-delivers a webhook event by id, resetting it to pending and triggering immediate delivery. It distinguishes from the sibling resend_webhook_event by noting the in-place mutation behavior.
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 provides guidance: prefer resend_webhook_event for most cases, keep retry_webhook_event for legacy in-place semantics. Clearly states when to use and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cancel_at_period_end_scheduled_chargeA
Toggle Stripe-style soft cancel on a recurring series. With enabled=true, the cycle generator stops emitting new cycles after the next paid cycle (the in-flight cycle still bills + can be paid). Reversible by passing enabled=false. Mutually exclusive with recurrence.endsAfter and recurrence.endsOn.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Scheduled charge ID | |
| enabled | Yes | true enables soft-cancel (series ends after the next paid cycle); false clears the flag. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully explains behavior: enabled=true stops cycle generator after next paid cycle while in-flight cycle continues; enabled=false reverses it. It also notes the mutation is reversible and not destructive, providing complete transparency.
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?
Three concise sentences: purpose, behavior, constraint. Front-loaded with key action, no unnecessary words. Every sentence earns its place.
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 simple toggle logic, 100% schema coverage, and no output schema, the description is complete. It explains what, when, how, and constraints, leaving no ambiguity for an AI agent to misuse the 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?
Input schema covers 100% of parameters with descriptions. Description adds context by explaining the effect of enabled in terms of cycle generation after next paid cycle, which is not in schema. Slightly redundant but adds value.
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?
Description uses specific verb 'Toggle' and resource 'soft cancel on a recurring series', clearly distinguishing from hard cancel siblings like cancel_recurrence_scheduled_charge. It explains the exact behavior and mutual exclusivity with other recurrence options.
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 (to stop new cycles after next paid cycle), that it's reversible, and that it's mutually exclusive with recurrence.endsAfter and endsOn, giving clear guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_customer_billing_email_overrideA
Set or clear the per-seller billing email override for a customer. The override is sticky: it takes precedence over the per-seller last-used email and the global customer.email for outbound seller-to-customer emails, and is never auto-overwritten by subsequent payments. Pass null to clear and fall back to the last-used email. Use this when the customer asks for a specific billing address (e.g. financeiro@empresa.com.br) different from the email they used at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Customer ID | |
| billingEmailOverride | Yes | Email to set as the override, or null to clear the override. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals key behavioral traits: the override is sticky, takes precedence over other emails, and is never auto-overwritten. No annotations were provided, so this information is valuable. It does not mention side effects or permissions, but the behavior is well-explained.
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 concise with 4 sentences, each adding value. The first sentence states the main purpose, followed by behavioral details and usage guidance. No 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, no output schema, and 2 parameters, the description covers the essential aspects. It provides usage context and behavioral details, making it complete for an agent to decide and invoke correctly.
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 input schema has 100% coverage, describing both parameters. The description adds value by explaining the effect of 'null' and providing a practical example (financeiro@empresa.com.br), which goes beyond the schema.
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 states the tool sets or clears a per-seller billing email override for a customer, specifying its sticky behavior and precedence. This clearly distinguishes it from other tools, as no sibling tools have a similar 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?
The description explicitly says to use this when the customer requests a specific billing email different from their checkout email. It does not explicitly state when not to use or provide alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_product_portal_configB
Create or merge the per-product portal customization. Both this tool and PATCH have the same merge semantics: only fields you provide are written; unspecified fields keep their persisted value. Use clear_product_portal_config (DELETE) to reset everything. Each Boolean / string field can be passed as null to inherit from the seller-level config.
| Name | Required | Description | Default |
|---|---|---|---|
| logoUrl | No | HTTPS URL of the logo image. | |
| productId | Yes | Product identifier — accepts the UUID (preferred — same id returned by list_products and webhook payloads) or the legacy positive integer id. UUID support added in Garu v0.10.0. | |
| businessName | No | Display name shown on the hosted payment page header. | |
| primaryColor | No | Primary brand color in hex (e.g. '#257264'). | |
| allowApplyCoupons | No | ||
| allowViewInvoices | No | ||
| customWelcomeText | No | ||
| requireCancelReason | No | ||
| customSuccessMessage | No | ||
| cancelAtPeriodEndOnly | No | ||
| sendCancellationEmail | No | ||
| allowUpdateBillingInfo | No | ||
| allowCancelSubscription | No | ||
| allowUpdatePaymentMethod | No | ||
| customCancellationMessage | No | ||
| sendPaymentMethodUpdatedEmail | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses merge semantics and null inheritance, but does not cover error handling, idempotency, permissions, or side effects like webhook triggers. The behavior is partially transparent.
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 short (two sentences plus a third about null) and front-loaded with the core purpose. It is efficient with no wasted words, though the mention of PATCH semantics could be integrated more smoothly.
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 high complexity (16 parameters, no output schema, no annotations), the description explains merge semantics and the null pattern. However, it omits return value, error conditions, and an overview of the config fields, leaving room for improvement.
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 only 25%. The description adds that each Boolean/string field can be null to inherit from seller-level config, which is valuable. However, it does not list or describe the many undocumented parameters (e.g., allowApplyCoupons, customWelcomeText), leaving a significant gap.
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 'Create or merge the per-product portal customization,' specifying the verb and resource. It distinguishes from siblings like clear_product_portal_config and get_product_portal_config, though it doesn't explicitly differentiate from update_product.
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 explains merge semantics, note that unspecified fields persist, and recommends clear_product_portal_config to reset. It also notes null inherits from seller-level config. However, it does not explicitly state when to create vs merge or mention alternatives like update_product.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_customerC
Update a customer's information for the current seller.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Customer ID | |
| city | No | ||
| name | No | ||
| No | |||
| phone | No | Phone with area code | |
| state | No | 2-letter state code | |
| number | No | ||
| street | No | ||
| zipCode | No | ||
| document | No | CPF (11 digits) or CNPJ (14 digits) | |
| complement | No | ||
| personType | No | ||
| neighborhood | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It fails to disclose whether updates are partial or full replacements, idempotency, required permissions, or any side effects. The description is too vague.
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 a single short sentence (7 words), which is efficient. However, its brevity may sacrifice necessary detail for a tool with many parameters and no annotations. It still earns a high score for conciseness.
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 complexity (13 parameters, no output schema, no annotations), the description is insufficient. It does not clarify update semantics, return values, error handling, or how it relates to sibling tools. The context is incomplete.
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 only 31%, but the tool description adds no parameter-level insight. It does not explain the meaning or usage of any of the 13 parameters beyond what the schema provides, failing to compensate for the low coverage.
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 action ('Update'), the resource ('customer's information'), and the scope ('for the current seller'). It effectively distinguishes from sibling tools like 'create_customer' and 'delete_customer'.
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?
No guidance on when to use this tool versus alternatives (e.g., when to update vs. create, or prerequisites like existing customer). The description does not mention any conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_productA
Update an existing product (partial PATCH — only the fields you provide are written; everything else keeps its persisted value). value is in decimal BRL / reais (e.g. 29.90), NOT centavos. Setting pixAutomatic: true exposes Pix Automático (BACEN auto-debit recurring Pix) on the subscription checkout. At least one write field is required.
| Name | Required | Description | Default |
|---|---|---|---|
| pix | No | Offer PIX at checkout. | |
| name | No | Product name. | |
| tags | No | Free-form tags. | |
| image | No | HTTPS URL of the product cover image. | |
| value | No | Price in decimal BRL / reais (e.g. R$29,90 → 29.90) — NOT centavos. Products store the price in reais, the same as the API and dashboard. | |
| boleto | No | Offer Boleto at checkout. | |
| productId | Yes | Product identifier — accepts the UUID (preferred — same id returned by list_products and webhook payloads) or the legacy positive integer id. UUID support added in Garu v0.10.0. | |
| returnUrl | No | URL the buyer returns to after a successful payment. | |
| unitLabel | No | Per-unit label shown on the checkout (e.g. 'seat'). | |
| creditCard | No | Offer credit card at checkout. | |
| description | No | Product description. | |
| installments | No | Max number of installments offered on credit card. | |
| pixAutomatic | No | When true, exposes Pix Automático (BACEN auto-debit recurring Pix) on the subscription checkout. Only the subscription checkout mode reads it. | |
| isSubscription | No | Mark the product as a subscription (recurring). | |
| subscriptionType | No | Subscription cadence label (e.g. 'monthly'). | |
| returnUrlButtonText | No | Label for the return-URL button on the success page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses PATCH behavior (only fields provided are written), clarifies value unit (decimal reais, not centavos), and explains pixAutomatic effect. Does not mention idempotency or error handling, but sufficient for an update tool.
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?
Three concise, front-loaded sentences. Each sentence adds distinct value: purpose+patch, value clarification, pixAutomatic+requirement. No 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 16 parameters, full schema coverage, no output schema, and no annotations, the description covers key nuances (partial update, value format, pixAutomatic, required field). Could mention idempotency or default behaviors, but overall complete enough.
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%, baseline 3. Description adds significant value: clarifies value format with example, explains pixAutomatic behavior, and notes the required write field condition. These details go beyond the schema descriptions.
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?
Description clearly states 'Update an existing product (partial PATCH)' with a specific verb and resource. It distinguishes from sibling tools like create_product and list_products, and the partial update behavior is explicit.
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?
Description implies when to use (to modify existing product) and states a requirement ('At least one write field is required'). It does not explicitly contrast with alternatives but the context is clear. Lacks explicit when-not guidance.
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.
37 tool updates
v0.18.0- First observed
cancel_charge - First observed
cancel_recurrence_scheduled_charge - First observed
change_scheduled_charge_payment_method - First observed
charge_now_scheduled_charge - First observed
clear_product_portal_config - First observed
clear_scheduled_charge_payment_method - First observed
create_boleto_charge - First observed
create_customer - First observed
create_pix_charge - First observed
create_product - First observed
create_scheduled_charge - First observed
delete_customer - First observed
get_charge - First observed
get_customer - First observed
get_integration_setup - First observed
get_product - First observed
get_product_portal_config - First observed
get_scheduled_charge - First observed
get_webhook_event - First observed
list_charges - First observed
list_customers - First observed
list_products - First observed
list_scheduled_charge_attempts - First observed
list_scheduled_charges - First observed
list_webhook_events - First observed
mark_paid_scheduled_charge - First observed
pause_scheduled_charge - First observed
postpone_scheduled_charge - First observed
refund_charge - First observed
resend_webhook_event - First observed
resume_scheduled_charge - First observed
retry_webhook_event - First observed
set_cancel_at_period_end_scheduled_charge - First observed
set_customer_billing_email_override - First observed
set_product_portal_config - First observed
update_customer - First observed
update_product
TDQS
Scored across 37 tools
Each tool targets a distinct resource and action with clear, detailed descriptions. Tools like pause_scheduled_charge and resume_scheduled_charge are complementary, not overlapping. Even similar operations like retry_webhook_event and resend_webhook_event are carefully differentiated by audit trail semantics.
All tools follow a consistent verb_noun pattern in snake_case. Verbs are imperative, nouns are plural for lists and singular for single operations. Even longer names like set_cancel_at_period_end_scheduled_charge adhere to the pattern without deviation.
37 tools is on the higher end but reasonable for a comprehensive payment platform covering customers, charges, scheduled charges, products, webhooks, and setup. Each tool serves a specific purpose, though the scheduled charge cluster (13 tools) could potentially be consolidated slightly.
The tool surface is extensive, covering CRUD for customers and charges, lifecycle management for scheduled charges, and webhook handling. A notable gap is the lack of a delete_product tool, as products can only be updated or have their portal config cleared.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
- mcpOAuthcom.stripe
MCP server integrating with Stripe - tools for customers, products, payments, and more.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server for Lemon Squeezy — stores, products, orders, subscriptions, license keys.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for PayMongo payment gateway (Philippines). Supports payment intents, sources, payments, refunds, and checkout sessions via Basic Auth.24202MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for bePaid payment gateway enabling payment operations including create, capture, void, refund, card tokenization, and subscriptions through natural language prompts.17MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for the Chargily Pay V2 API, enabling payment management including customers, products, prices, checkouts, and payment links.MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for Stone's payment gateway, enabling AI agents to manage orders, charges, customers, subscriptions, and more via the Pagar.me API.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Garu-Pagamentos/garu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server