Skip to main content
Glama
SubscriptionTech

ProAbono MCP Installation

Official

Link a ProAbono Subscription Workflow, and the way back (In-Site step 2)

link_subscription_workflow

Generates server-side integration code for ProAbono workflows, reading the encrypted query from object links and routing the customer back after sign-up, plan change, restart, registration, or invoice payment.

Instructions

Generates the round trip of In-Site step 2: the server-side code that fetches a ProAbono object and reads the encrypted workflow query out of its Links by rel, both ways of opening it -- ProAbonoPortal.open({ query }) in the application and a ?pa_query= link for e-mails -- and the single return route the customer comes back to, which re-reads the session user's rights first and then branches on from x outcome for all five outcomes. Reads the account's real offers. Also returns the BackOffice action no API can perform: the redirect URL to configure. Use it for sign-up, plan change, restart, registering a payment method or paying an invoice. Writes the installation state unless record_state is false.

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.
workflowYesWhich workflow this entry point opens. subscribe: a named plan. choose_offer: the catalogue, post sign-up. upgrade: change of plan. restart: a suspended subscription. register: contact details and a payment method. pay_invoice: one due invoice.
offer_refNoThe offer the workflow opens on, for subscribe and upgrade. Checked against the account's catalogue, because a workflow on an unknown offer fails at the end of a sign-up rather than at the start.
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.
return_routeNoPath the customer comes back to when a workflow ends, e.g. "/billing/return". Defaults to that. One route serves every workflow.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.3.1

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden. It does disclose meaningful behaviors: it reads the account's real offers, returns a BackOffice redirect URL, and writes installation state unless record_state is false. However, the write behavior is already documented in the record_state parameter schema, and the description omits other potential side effects like network/auth requirements or exact filesystem changes, leaving some gaps.

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

Conciseness2/5

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

The description is a dense, run-on paragraph with a confusing placeholder-like phrase 'branches on from x outcome for all five outcomes.' It repeats information already in the schema (writes installation state unless record_state is false) and embeds code snippets inline, making it harder to parse than necessary. This is over-specification without clear structure, not concise front-loading.

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

Completeness3/5

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

Given the tool's complexity (6 params, no output schema, no annotations), the description covers the main outputs and side effects but leaves key details unclear: the ambiguous 'x outcome', the exact format of the returned redirect URL, and what the generated code includes beyond the listed items. It is reasonably complete but not self-sufficient for an agent to predict all call results.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described, so the baseline is 3. The description adds some contextual color (e.g., reading account offers relates to offer_ref validation) but largely repeats the schema's parameter descriptions rather than adding new meaning. Since the schema already does the heavy lifting, a 3 is appropriate.

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

Purpose4/5

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

The description clearly states it generates the round-trip code for In-Site step 2, enumerating specific outputs (server-side fetch code, ProAbonoPortal.open, ?pa_query= link, return route, BackOffice redirect URL) and concrete use cases. It does not explicitly name sibling tools, relying on 'In-Site step 2' and the use-case list to differentiate, so it stops short of a 5.

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?

It provides explicit usage context: 'Use it for sign-up, plan change, restart, registering a payment method or paying an invoice.' This tells an agent when to invoke the tool, but it offers no when-not-to-use guidance or names alternative tools (e.g., install_insite, install_customer_portal), so it lacks full exclusion/alternative coverage.

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