Skip to main content
Glama
SubscriptionTech

ProAbono MCP Installation

Official

Generate the rights synchronization (In-Site step 3)

sync_usage_rights

Generates code that reads customer rights from the ProAbono Usage API, caches them, and gates access to features, determining what a signed-in user can do.

Instructions

Generates the code that reads a customer's rights from the ProAbono Usage API, caches them correctly and gates access on them -- step 3 of the In-Site installation, and the one that decides what a signed-in user may actually do. Returns the rights module for the stack, the gate at a call site, the write-back for a Feature the application changes (quoted and confirmed with the end customer when it is billable), and the cache expiry policy. Reads the account's real Features so the code names them. Give customer_ref to also diagnose what that customer's Usages currently say, which is how an empty response is told apart from a broken integration. Never gate on the offer reference: rights come from the Usage API.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
stackYesThe host project's stack. Detect it from the open project (package.json, composer.json, requirements.txt, Gemfile, .csproj) and confirm with the developer. Use "generic" when none fits.
customer_refNoA real customer to check the wiring against. Their Usages are read and an empty answer is diagnosed against their subscriptions.
feature_refsNoThe Features to gate on. Left out, every Feature of the business is listed with its type so the developer can choose.
project_rootNoRoot of the developer's project, where `.proabono/installation.json` is written. Defaults to the directory this server was launched in, which is the project for every MCP client that starts the server inside it. Pass it when that is not the case.
record_stateNoRecord this step in `.proabono/installation.json`. Default true. Set false to generate code without touching the developer's filesystem at all.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.3.1

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and it does substantial work: it discloses that the tool reads the account's real Features, reads a customer's Usages when customer_ref is given, returns generated code rather than modifying the app directly, and includes a confirmation step for billable write-backs. It could mention side effects such as writing installation.json or auth requirements in the description itself, but the schema's record_state parameter covers the filesystem touch.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and every clause adds information; it is a dense but efficient paragraph. It is longer than strictly necessary and could benefit from structure, but no sentence is wasted.

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

Completeness4/5

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

For a code-generation tool with 5 parameters, no annotations, and no output schema, the description is thorough: it explains what the returned code contains, the inputs that affect generation, the diagnostic use case, and an explicit semantic exclusion. It is not exhaustive — prerequisites and integration points of the generated code are implied rather than stated — but it is genuinely complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds some meaning beyond the schema — the diagnostic rationale for customer_ref ('how an empty response is told apart from a broken integration') and the semantic rule that rights come from the Usage API, not the offer. This is helpful but not a heavy compensation for gaps since the schema already documents each parameter well.

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

Purpose5/5

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

States a specific verb and resource ('Generates the code that reads a customer's rights from the ProAbono Usage API') and enumerates exactly what it returns: rights module, gate at a call site, write-back, and cache expiry policy. The 'step 3 of the In-Site installation' positioning plus the 'Never gate on the offer reference' exclusion distinguish it from siblings like get_usages, generate_pricing_table, and generate_integration_code.

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

Usage Guidelines4/5

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

Places the tool clearly within the In-Site installation sequence ('step 3... the one that decides what a signed-in user may actually do') and explains when to pass customer_ref for diagnosing empty responses. It gives a strong when-not for the code it produces ('Never gate on the offer reference') but does not explicitly name alternative tools to choose instead, falling just short of a 5.

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