Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_course_list_offers

Read-onlyIdempotent

Lists membership offers in a location with pagination, title search, and published/draft filtering.

Instructions

COURSES API — the {productId} path parameter is the course (product) id. List Offers List membership offers in the location. Requires a Location token with courses.readonly. Send Version: v3. Uses membership listView pagination (cursor encodes skip). Location-wide — membership does not filter by productId. Default-offer rows are not included. Endpoint: GET /courses/offers (Version header: v3; source: v3/courses-v3.json) Requires a Sub-Account (location) token. OAuth scopes: courses.readonly Pagination params: limit, cursor — pass them to page through full result sets.

Input Schema

NameRequiredDescriptionDefault
limitNoPage size (1-50)
cursorNoOpaque cursor from the previous page (encodes skip)
searchNoCase-insensitive title search
locationIdYesLocation id or sub-account id is required.
visibilityNopublished or draft

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses the auth requirement (Location/sub-account token, courses.readonly scope), the required Version: v3 header, and the pagination mechanic (cursor encodes skip). It also flags the non-obvious exclusion of default-offer rows, which an agent could not infer from annotations or schema.

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

Conciseness3/5

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

It is front-loaded with scope-relevant facts, but the auth requirement is restated three times ('Location token with courses.readonly', 'Requires a Sub-Account (location) token', 'OAuth scopes: courses.readonly') and the Version: v3 detail appears twice. Tightening those redundancies would make the useful content easier to scan.

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 read-only list operation with full annotation coverage and no output schema, the description covers auth, versioning, pagination, and result exclusions well. It leaves the response shape undocumented, which is a minor gap given no output schema is provided, but overall it is complete enough to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds value by explaining that limit and cursor should be passed together to page through full result sets and that cursor encodes skip. It does not document search or visibility in prose, and the stray productId mention does not correspond to any actual parameter.

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 names a specific verb and resource ('List membership offers in the location') and scopes it precisely (location-wide, default offers excluded), which distinguishes it from list-style siblings like ghl_course_list. The opening line about the {productId} path parameter is confusing because no such parameter exists in this location-scoped tool, which slightly muddies the otherwise clear purpose.

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 gives clear usage context and meaningful exclusions ('Location-wide — membership does not filter by productId', 'Default-offer rows are not included'), which tells the agent what this list will and will not return. It stops short of explicitly routing to alternatives such as ghl_course_get_offer for a single offer, so it is not a full when/when-not statement.

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

Deploy Server

Other Tools