Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_course_list_completions

Read-onlyIdempotent

Lists course lesson completions for a specified learner, or returns a paginated contact rollup for course creators.

Instructions

COURSES API — the {productId} path parameter is the course (product) id. List Completions With contactId, return that learner's completed lessons. Without contactId, return a paginated creator rollup by contact. Requires a Location token with courses.readonly. Send Version: v3. Endpoint: GET /courses/products/{productId}/completions (Version header: v3; source: v3/courses-v3.json) Requires a Sub-Account (location) token. OAuth scopes: courses.readonly Pagination params: pageSize — pass them to page through full result sets.

Input Schema

NameRequiredDescriptionDefault
pageSizeNoCreator page size (1-50). Ignored when contactId is set.
contactIdNoCRM contact id. Required for per-learner completions. Omit for the creator rollup.
productIdYesProduct id
locationIdYesLocation id or sub-account id is required.
pageNumberNoCreator page number (1-based). Ignored when contactId is set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely useful operational context: requires a Sub-Account (location) token with courses.readonly scope, must send Version: v3, and pagination only applies to the rollup mode. It stops short of describing the returned record shape, which matters given there is no output schema.

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?

Front-loads the course/productId mapping and the two-mode behavior, which is the right priority. Some boilerplate (endpoint line, version header repeated twice, the awkward 'Pagination params: pageSize' phrasing that omits pageNumber) is redundant but not harmful.

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?

Auth token type, scope, version header, endpoint, mode selection and pagination are all covered for a 5-parameter read tool with no output schema. The remaining gap is the shape of the returned completion records, which an agent must discover from the response itself.

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 the two-mode semantics of contactId, pageSize/pageNumber being ignored when contactId is set, and locationId are already documented in the schema. The description reinforces that productId is the course id, but adds little beyond what the schema states, so the baseline 3 applies.

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 (list completions for a course product) and immediately clarifies the two operating modes: per-learner when contactId is supplied, creator rollup otherwise. An agent knows exactly what data this returns, and the `{productId}` path note ties it to the course (product) resource.

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?

Explicitly says when to pass contactId versus omit it, which is the main branching decision for this tool. It does not name sibling alternatives (e.g. ghl_course_list_category_progress or ghl_course_list_bulk_progress), so cross-tool routing is left to the agent, keeping it below a 5.

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