Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_course_get_offer

Read-onlyIdempotent

Retrieve a membership course offer by ID for a specific location using a courses.readonly sub-account token.

Instructions

COURSES API — the {productId} path parameter is the course (product) id. Get Offer Get a membership offer by id. Requires a Location token with courses.readonly. Send Version: v3. Default-offer rows (source other than membership) return 404. Endpoint: GET /courses/offers/{offerId} (Version header: v3; source: v3/courses-v3.json) Requires a Sub-Account (location) token. OAuth scopes: courses.readonly

Input Schema

NameRequiredDescriptionDefault
offerIdYesOffer id
locationIdYesLocation id or sub-account id is required.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent profile, and the description adds genuinely new behavioral context: it requires a Sub-Account token with courses.readonly, must send the Version: v3 header, and returns 404 for default-offer rows whose source is not membership. That 404 caveat is a useful gotcha beyond the annotations.

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?

Front-loads the verb and keeps to a few lines, but the leading 'COURSES API — the {productId} path parameter' sentence is noise since no such parameter exists, and endpoint/source metadata is somewhat redundant with annotations.

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

Completeness4/5

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

For a simple read-only getter with fully documented params and coverage, the description gives enough: auth requirement, version header, and the notable 404 edge case. No output schema exists, so return-shape detail is not required.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description clarifies that the id is a membership offer id, but it also references a {productId} path parameter absent from the schema, which adds confusion rather than meaning to the two real params.

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?

States a specific verb and resource: 'Get a membership offer by id', which clearly distinguishes it from the create/update/delete offer siblings. The opening line references a '{productId} path parameter' that does not exist in the schema, which slightly muddies an 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 Guidelines3/5

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

Implies usage (fetch a single offer by id) but never states when to prefer this over ghl_course_list_offers or how to discover a valid offerId. The only guidance is the prerequisite condition (Location token with courses.readonly) and the 404 rule, not a use-vs-alternative distinction.

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