Skip to main content
Glama

getcourse-mcp

Automate a GetCourse account from an AI agent — grant lesson/training access, manage users and groups — with no official API.

npm version license MCP TypeScript PRs welcome

English · Русский

Why

GetCourse has no public API for the things admins do every day — opening a lesson for a student, adding someone to a training, moving users between groups. Those actions live only in the admin UI.

getcourse-mcp exposes them as MCP tools. It drives a browser you're already logged into over CDP, so it reuses your real session cookie and CSRF token — no scraping of passwords, no fragile API keys. An AI agent (Claude, etc.) can then find a user, inspect their groups and grant access in one turn.

  • 🔑 Uses your live session — connects over CDP to a logged-in Chromium/Yandex browser

  • 👥 Access by groups — the GetCourse model: training/lesson access = group membership

  • 🧩 5 focused tools — status, find user, list groups, check membership, add to groups

  • 🪶 TypeScript, ESM — thin, strict, MIT, no account secrets in the repo

Related MCP server: Coursera MCP

How access works in GetCourse

Access to a training (and its lessons) is granted by group membership. "Full access" to a course often means membership in a Module 1 group plus a group that starts the drip schedule (module 1 now, the rest on a timer). To "give access like another student", read their groups and reproduce them:

gc_find_user            # student@example.com → id, name
gc_check_membership     # which of these groups is student X in?
gc_add_user_to_groups   # add student Y to the same groups

Franchise / "buyers-only" offers → access via a completed purchase

Some offers (franchises, "только купившие" trainings) deliver access only from a completed purchase — group membership grants nothing there. Grant it in one call:

gc_find_offers   {"query":"Трафик Формула"}                            # → offer id, e.g. 6510356
gc_create_order  {"email":"user@x.ru","offerIds":["6510356"],"complete":true}
#   creates the order AND completes a 0₽ payment → access is live immediately

⚠️ A priced deal left in «Новый» delivers NO access — it must be paid. There is no «Оплачен» item in the status dropdown; completion is payment-driven. complete:true (or a later gc_pay_order {"dealId":"…"}) registers a 0₽ received payment → deal → «Завершён» → access granted. Use complete only for 0₽/comp offers.

A 0₽ order has nothing to pay, so GetCourse flips it «Новый → Завершен» on creation by itself; complete:true then detects the finished deal and touches nothing. Purchase-based access does not appear in the user's groups — that's by design, not a bug. Verify it on /teach/control/stat/user/id/<userId> (Training / Lesson access), which reflects the grant immediately.

Requirements

  1. A Chromium-based browser (Chrome / Yandex) launched with a debug port on a separate profile, logged into your account:

    browser.exe --remote-debugging-port=9222 --user-data-dir=C:\gc-cdp-profile
  2. Node ≥ 18.

Setup

npm install
cp .env.example .env      # set GETCOURSE_BASE_URL (and GETCOURSE_CDP_URL if not :9222)
npm run build

Register it with your MCP client (see .mcp.json.example):

{
  "mcpServers": {
    "getcourse": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": { "GETCOURSE_BASE_URL": "https://your-account.getcourse.ru" }
    }
  }
}

Tools

Tool

Purpose

gc_status

Check the CDP browser session actually has admin rights (not merely that a session exists). Reports the "logged in as a student" case separately.

gc_find_user

Find a user by email → id, name, type, status.

gc_list_training_groups

Access groups of a training (id + name).

gc_list_user_groups

Groups a user belongs to (id + name).

gc_check_membership

Is a user in the given groups? (instant, via the user list)

gc_add_to_groups

Add an existing user to groups via the card (preserves other groups). dryRun.

gc_remove_from_groups

Remove a user from groups = revoke access. dryRun.

gc_add_user_to_groups

Add via the bulk import (creates the user if new) = grant access. dryRun.

gc_copy_access

Give a user the same groups as a reference student. dryRun.

gc_update_user

Edit card fields (first/last name, phone, city, comment). Email is out of scope. dryRun.

gc_find_offers

Search sales offers by name → id + price + actuality.

gc_find_orders

List a user's orders (dealId + status).

gc_create_order

Create an order = grant access via a purchase (the only way for "buyers-only" trainings, where groups don't grant access). Reports the created deal's id and status; a priced deal in «Новый» means no access until paid, complete:true drives it to «Завершён». ⚠️ single-step: dryRun:false creates the order immediately.

gc_pay_order

Complete a deal by registering a received payment (amount "0" by default) → deal «Завершён» → access delivered. The way to "mark paid" (no «Оплачен» in the status dropdown). ⚠️ don't use 0 on a real paid deal. dryRun.

gc_set_order_status

Change a deal's status (e.g. cancel a duplicate: cancelled + cancelReasonId).

gc_refund_order

File a money refund for an order via the GetCourse payment module (real money back to the buyer's card). Only for payments processed by the platform; VAT must mirror the original receipt. dryRun.

gc_user_summary

One call: profile + groups + orders for a user.

gc_list_mailing_categories

List mailing categories (tag-like segmentation) — id + name.

gc_add_to_mailing_category

Add a user to a mailing category.

gc_remove_from_mailing_category

Remove a user from a mailing category.

Usage

Run the MCP server over stdio, or call a tool directly for scripting:

node dist/index.js                                   # MCP (stdio)

npx tsx src/run.ts gc_find_user '{"email":"user@example.com"}'
# → Found: Jane Doe | user@example.com | student | active | id: 100200300

npx tsx src/run.ts gc_add_user_to_groups \
  '{"email":"user@example.com","groupIds":["100001","100002"]}'
# → OK [done] import submitted

npx tsx src/run.ts gc_check_membership \
  '{"email":"user@example.com","groups":[{"id":"100001","name":"Module 1"}]}'
# → ✅ Module 1 (100001)

Implementation notes

  • Granting access (gc_add_user_to_groups) uses the bulk Add users form (/pl/user/user/import?type=text): email + selected groups. For an existing user the "overwrite on match" flag is required (overwriteExisting, default true), otherwise the groups are not applied — the import carries only the email, so no profile data is touched.

  • A direct mass action exists (POST /pl/logic/operation/prepare?operationType=user_addtogroup), but in the current UI it is a selection-builder wizard — a candidate to wire up as an alternative path.

  • Membership is checked through the user list filtered by a user_ingrouprule rule (params.value.selected_id), which reflects membership immediately (the training student list mirrors access asynchronously and is not reliable for verification).

  • Writes never trust their own exit code. A single-step operation can throw after the mutation landed, so gc_create_order snapshots the user's deals first and reports the deal that actually appeared — which also removes the "newest deal must be ours" guess.

  • The session check tests rights, not the mere presence of a session. gc_status probes the admin user list (/pl/user/user) — the endpoint gc_find_user/resolveUserId depend on. It used to check /teach/control, which renders for students too: a student session reported "✅ logged in" and every later read silently ran as that student. The "denied" signal is anchored on GetCourse's own error-page wording so stray list content can't lock an admin out.

  • __name shim. page.evaluate callbacks are serialized and run inside the page. esbuild (what tsx runs on) rewrites named inner functions into __name(...) calls, which do not exist there — hence ReferenceError: __name is not defined under tsx src/*.ts while the compiled dist/*.js works. Every navigation installs a no-op shim (ensureEvalShim), so both entry points behave the same. If you drive page.goto yourself, call ensureEvalShim(page) after it.

Contributing

Contributions are welcome — open an issue or a PR. Good first ideas:

  • direct user_addtogroup mass action instead of the import form

  • a "copy all groups from one student to another" tool

  • revoking access (gc_remove_user_from_groups)

  • exporting students; test coverage

  1. Fork and branch: git checkout -b feature/my-change

  2. npm install, make changes; npm run build and npx tsc --noEmit must pass

  3. Never commit secrets (cookies/passwords/.env) or real account data

  4. Open a PR describing what and why

Security

Secrets (cookies/passwords) live only in the browser and your environment — never in the repo. .env and a local .mcp.json are git-ignored.

License

MIT

Available Tools

19 tools
gc_add_to_groupsB

Добавить существующего пользователя в группы через карточку (чисто, без импорта; сохраняет остальные группы). dryRun — предпросмотр.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail существующего пользователя.
dryRunNoПоказать изменение без сохранения.
groupIdsYesID групп, в которые добавить (= выдать доступ).

TDQS

B3.3/5.0
Behavior3/5

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

The description discloses that the operation is clean (preserves other groups) and offers a dry-run preview. However, without annotations, it lacks details on failure modes, permissions, or side effects beyond what is stated.

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

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences. Every word earns its place, and the key points are front-loaded.

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?

For a simple 3-parameter tool without output schema, the description adequately covers the core action and the dryRun feature. However, it lacks information on return behavior, error conditions, and fails to differentiate from similar sibling tools.

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%, and the description adds no new information beyond the parameter descriptions in the schema. Baseline 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 the tool adds an existing user to groups, preserving other groups and without import. However, it does not differentiate from the similarly named sibling 'gc_add_user_to_groups', which may cause confusion.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. It mentions dryRun for preview but no when-not-to-use or prerequisites.

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

gc_add_to_mailing_categoryA

Добавить пользователя в категорию рассылок (по categoryId из gc_list_mailing_categories).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя.
categoryIdYesID категории рассылок (см. gc_list_mailing_categories).

TDQS

A3.8/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 full burden. It discloses that this is an add operation but does not mention side effects, permissions, duplicate handling, or whether the user must exist. Basic transparency but not detailed.

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

Conciseness5/5

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

Single, efficient sentence that conveys the core purpose and a key prerequisite. No unnecessary words.

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 two-parameter tool with no output schema, the description is largely complete. It covers what it does and where to get the needed IDs. Could mention if the email must correspond to an existing user, but not essential.

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% with adequate parameter descriptions. The tool description adds value by referencing gc_list_mailing_categories for the categoryId, but does not provide new semantic meaning beyond the schema.

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?

The description clearly states the action 'Add a user' and the resource 'mailing category', with a reference to gc_list_mailing_categories for obtaining the categoryId. It distinguishes from sibling tools like gc_remove_from_mailing_category and gc_add_to_groups.

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?

The description implies usage by referencing gc_list_mailing_categories but does not explicitly state when to use this tool versus alternatives or provide any exclusions. No guidance on prerequisites or conditions.

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

gc_add_user_to_groupsA

Добавить пользователя в группы через импорт (создаёт нового при отсутствии) = выдать доступ. dryRun — предпросмотр.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя (существующий или новый).
dryRunNoДойти до предпросмотра без подтверждения (по умолчанию false).
groupIdsYesID групп, в которые добавить.
sendInvitationNoОтправлять письмо-приглашение (по умолчанию false).
overwriteExistingNoСтавить флаг «перезаписать при совпадении» — нужен, чтобы группы применились к существующему юзеру (по умолчанию true; импорт несёт только email, данные не теряются).

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the creation aspect and dry-run preview, but omits details like additive vs overwrite behavior, permission requirements, and side effects. The schema fills some gaps (e.g., overwriteExisting), but the description does not integrate them.

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 very concise (one sentence plus a fragment). It front-loads the primary action. However, it could benefit from a slightly more structured format to improve readability.

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

Completeness2/5

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

Given 5 parameters, 2 required, and no output schema, the description is too minimal. It fails to explain the overall behavior, such as whether the operation is additive or replaces groups, permission requirements, or the effect on existing memberships. The schema helps, but the description lacks necessary context.

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 baseline is 3. The description only adds value for the 'dryRun' parameter, comparing it to preview. Other parameters rely solely on schema descriptions, which are adequate but not enhanced by the description.

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?

The description clearly states the action (add user to groups), the resource (user and groups), and the special behavior of creating a new user if absent. It distinguishes from sibling tools like 'gc_add_to_groups' by highlighting the import/creation aspect.

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?

The description implies this tool is used when a user might not exist, mentioning 'creates new at absence'. However, it does not explicitly state when to use this vs alternatives like 'gc_add_to_groups', nor does it provide when-not or exclusion criteria.

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

gc_check_membershipA

Проверить, состоит ли пользователь (по email) в указанных группах (по списку пользователей — мгновенно).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя.
groupsYesГруппы для проверки: [{id, name?}].

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It indicates a non-destructive check operation, but fails to mention return value format, authentication requirements, error handling, or rate limits. The term 'мгновенно' adds slight context, but overall transparency is average.

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?

A single sentence that conveys the core purpose, though the phrase 'по списку пользователей' may be slightly confusing (should be 'групп'). Still, it is concise and front-loaded with the action.

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

Completeness2/5

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

The tool has no output schema, so the description should clarify what the agent can expect as a result (e.g., boolean, membership list). This is missing entirely. Additionally, it does not handle edge cases (e.g., invalid email, unknown groups). Given the simplicity of the tool, the omission is a significant gap.

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 minimal descriptions. The description reinforces that 'email' identifies the user and 'groups' are the groups to check, but adds no additional semantic detail beyond the schema. Baseline score of 3 is appropriate.

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?

Description clearly states the verb 'Проверить' (check) and resource 'membership in groups', with specific inputs (email and list of groups). It immediately distinguishes from sibling tools like gc_add_to_groups and gc_remove_from_groups, which modify membership.

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?

The context 'мгновенно' (instantly) implies a quick, read-only operation. The purpose is clear enough that an agent can infer when to use this vs. sibling tools (e.g., for checking before adding/removing). However, no explicit when-not-to-use or alternative guidance is provided.

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

gc_copy_accessA

Выдать пользователю такой же доступ, как у эталонного ученика (копирует его группы). filter — только группы с подстрокой. dryRun — предпросмотр.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoПоказать, что будет добавлено, без сохранения.
filterNoКопировать только группы, чьё название содержит подстроку.
toEmailYesКому выдать такие же группы.
fromEmailYesЭталонный ученик, чьи группы копируем.

TDQS

A3.9/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 full burden. It mentions copying groups (mutation) and provides dryRun for preview, which is good. However, it does not clarify if groups are added or replaced, nor does it describe permissions needed or side effects.

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

Conciseness5/5

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

The description is very concise, with two sentences that front-load the main purpose and then specify optional parameters. No wasted words.

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 no annotations and no output schema, the description is fairly complete for a simple tool. But it lacks details on whether access is additive or replacive, error cases, and return behavior.

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%, baseline 3. The description adds meaning: filter is substring match, dryRun is preview without saving. This adds value beyond the schema.

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?

The description clearly states the tool copies access from a reference user to another user by copying groups. It specifies optional filtering and dry-run capability. This distinguishes it from sibling tools that add users to individual groups.

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?

The description implies usage for bulk copying of access but does not explicitly state when to use this tool versus alternatives like gc_add_to_groups. No guidance on prerequisites or when not to use.

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

gc_create_orderA

Создать заказ по офферам = выдать доступ покупкой (для тренингов «только купившие» группы доступ НЕ дают). 0₽ комп-оффер = доступ без денег. ⚠️ dryRun=false создаёт заказ СРАЗУ (без предпросмотра).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя (существующий).
dryRunNoТолько эхо, БЕЗ создания. ВНИМАНИЕ: при dryRun=false заказ создаётся сразу — у операции нет предпросмотра.
offerIdsYesID офферов (см. gc_find_offers). 0₽ комп-оффер = доступ без денег.
tryPayFromDepositNoПопытаться оплатить с депозита (по умолчанию false).

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description discloses key behavioral traits: immediate creation with dryRun=false, zero-ruble offers grant free access, and training groups behavior. However, it omits details on reversibility, permissions, or rate limits.

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 relatively concise with front-loaded purpose. It uses clear separators like ⚠️ for warnings. However, it could be slightly more compact by combining related statements.

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 no output schema and 4 parameters, the description covers the core functionality but lacks information about return values, error handling, or required permissions. It is adequate but not fully comprehensive for a mutation tool.

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%, and the description adds context beyond the schema, such as email must exist, offerIds reference gc_find_offers, and dryRun warnings. The extra details enhance understanding without fully compensating for missing output schema.

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?

The description clearly states the tool creates an order from offers and grants access via purchase, distinguishing it from sibling tools like gc_refund_order or gc_find_orders. It also explains special cases like zero-ruble comp-offers and the behavior for training groups.

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?

The description does not explicitly specify when to use this tool versus alternatives or when not to use it. It lacks guidance on prerequisites or trade-offs with sibling tools like gc_add_to_groups or gc_copy_access.

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

gc_find_offersA

Найти офферы продажи по подстроке названия (id + цена + актуальность). Нужно для gc_create_order.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesПодстрока названия оффера (например «Формула AI Полный доступ»).

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool searches by substring and returns id, price, and relevance. It does not mention side effects, permissions, or rate limits, but given it's a read search, this is adequate.

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 two sentences long, concise and to the point. The second sentence could be integrated, but there is no extraneous information.

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 tool with one parameter and no output schema, the description is fairly complete: it explains the action, the search method, the return values, and the use case. It lacks details on pagination or edge cases, but is sufficient.

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?

The only parameter 'query' has a description in the schema and the tool description provides an example. With 100% schema coverage, the description adds marginal value, meeting the baseline.

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?

The description clearly states the tool's purpose: find offers by substring, returning id, price, and relevance. It also notes it's needed for gc_create_order, distinguishing it from sibling search tools like gc_find_orders and gc_find_user.

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?

The description implies usage context by stating 'Нужно для gc_create_order', indicating it's used before order creation. It does not explicitly list when not to use or alternatives, but the context is clear enough for an AI agent.

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

gc_find_ordersA

Список заказов (сделок) пользователя по email: dealId + статус + сумма.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states 'list' (implying read-only) but does not confirm safety, idempotency, or side effects. No mention of authentication, rate limits, or destructive potential.

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 a single concise sentence that front-loads the key action and results. No wasted words, though it could be slightly more structured.

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?

Given the tool's simplicity (one parameter, no output schema), the description adequately covers the purpose and return fields. It provides enough context for an agent to use it correctly.

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% and the description adds minimal extra meaning beyond 'by email'. The parameter email is already described in the schema, so the description doesn't significantly enhance understanding.

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?

The description clearly states the tool lists orders (deals) by email, specifying the returned fields (dealId, status, sum). This verb-resource combo distinguishes it from sibling tools like gc_create_order or gc_refund_order.

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?

The description implies usage for finding orders by email but provides no explicit when-to-use or when-not-to-use guidance. No alternatives are named, leaving the agent to infer from context.

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

gc_find_userA

Найти пользователя по email в списке пользователей (id, имя, тип, статус).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя для поиска.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It states it finds a user and returns certain fields, which is sufficient for a read-only lookup. It does not mention error conditions or if multiple matches possible, but for a simple search tool this is adequate.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately conveys the tool's purpose. No wasted words.

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?

Given the simplicity of the tool (one parameter, no output schema), the description covers the core functionality and expected output fields. It is complete enough for an agent to select and invoke correctly, though it lacks details on error handling.

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% with a description for the email parameter. The tool description adds value by specifying the output fields, which helps the agent understand what the parameter is used for (search by email and get user details).

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?

The description clearly states the action 'find user by email' and lists the output fields (id, name, type, status). It distinguishes from sibling tools which are mostly for other operations like add, remove, or find for offers/orders.

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?

The description implicitly tells when to use this tool: when you need to find a user by email. No explicit alternatives or when-not-to-use guidance is given, but the context of sibling tools makes it clear this is the only find-user-by-email tool.

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

gc_list_mailing_categoriesA

Список категорий рассылок (tag-подобная сегментация): id + название. GetCourse не имеет свободных user-тегов — это группы + категории рассылок.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail любого пользователя (список категорий общий для аккаунта).

TDQS

A4/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 full burden. It discloses that the tool returns id and name, and that the list is account-wide. However, it does not explicitly state that it is read-only or any potential side effects, authentication needs, or limitations.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the main purpose, and every sentence adds value. No redundant information.

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?

Given no output schema or annotations, the description provides a clear picture of what the tool returns (id+name) and why the parameter is needed. It references sibling concepts (tags, groups) for context. Minor improvements could mention that the list is exhaustive or if there is pagination.

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%, and the description adds value by explaining that the email parameter is needed only to identify the account and that the list is common across users. This goes beyond the schema's basic type and requirement.

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?

The description clearly states 'List of mailing categories' with id+name, and provides context that these are tag-like segmentation distinct from groups. It distinguishes itself from sibling tools like gc_list_training_groups and gc_list_user_groups.

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?

Usage is implied by the name and context, but there is no explicit guidance on when to use this tool versus alternatives or prerequisites. The description mentions that GetCourse lacks free user tags, but does not direct the agent to use this tool before adding/removing categories.

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

gc_list_training_groupsA

Список групп доступа, связанных с тренингом (id + название). filter — подстрока по названию.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoПодстрока для фильтрации названий групп (регистронезависимо).
trainingIdYesID тренинга.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It indicates a read operation (listing) but does not explicitly state safety, authentication needs, or potential side effects. The description is adequate but not thorough.

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

Conciseness5/5

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

Two concise sentences with no wasted words. The description is front-loaded with the core purpose, followed by parameter clarification.

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?

For a simple tool with 2 parameters and no output schema, the description covers the main purpose and filter semantics. However, it lacks details on error handling (e.g., invalid trainingId), return format structure, and pagination, leaving some gaps.

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 adds context that filter is a substring on name and output includes id+name, but these are partially covered by schema descriptions. No significant extra semantic value beyond schema.

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?

The description clearly states the tool lists access groups related to a training, returning id and name. The verb 'list' and resource 'training groups' are specific, and the tool is distinct from siblings like gc_list_user_groups.

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?

The description implies usage for retrieving groups by training, but does not explicitly guide when to use it versus alternatives or when not to use it. No exclusions or conditions are mentioned.

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

gc_list_user_groupsA

Список групп, в которых состоит пользователь (id + название). filter — подстрока по названию.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя.
filterNoПодстрока для фильтрации названий групп (регистронезависимо).

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided. Description mentions return fields (id, name) and filter behavior (case-insensitive substring match). No disclosure of pagination, limits, or authentication needs.

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

Conciseness5/5

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

Two concise sentences. First sentence states purpose and output, second explains the filter parameter. No wasted words.

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?

With 2 parameters and no output schema, the description covers essential behavior. Could mention empty result case, but adequate for a simple list tool.

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% and descriptions are already present. The description adds only 'регистронезависимо' (case-insensitive) to filter, which is a minor addition.

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?

The description clearly states the tool lists groups a user belongs to, returning id and name. It distinguishes from sibling add/remove/check tools.

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?

The description implies usage for listing a user's groups with an optional filter. It lacks explicit guidance on when to use vs alternatives or prerequisites.

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

gc_refund_orderA

Оформить возврат денег по заказу через платёжный модуль Геткурса (реальный возврат на карту покупателя). Только для платежей через платформу Геткурс. НДС — как в чеке прихода (none = «без НДС»). dryRun — сводка без отправки.

ParametersJSON Schema
NameRequiredDescriptionDefault
vatNoСтавка НДС позиций возврата — как в чеке прихода (по умолчанию none = «без НДС»).
amountNoСумма частичного возврата (только при одной позиции; по умолчанию полная стоимость).
dealIdYesID сделки (из gc_find_orders / gc_user_summary).
dryRunNoЗаполнить форму возврата и показать сводку БЕЗ отправки (по умолчанию false).
paymentIdNoID платежа, если на сделке их несколько (список вернётся в ошибке).

TDQS

A4.1/5.0
Behavior3/5

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

No annotations; description discloses real refund and dryRun mode but lacks details on side effects, authorization, or rate limits. Adequate but not thorough.

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

Conciseness5/5

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

Short paragraph with parameter details in dash-list style; every sentence contributes value. No redundancy.

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?

Covers all parameters and action but lacks explanation of return values or error handling. Given no output schema, this is a notable gap.

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%; description adds meaningful context for vat, amount, dealId, dryRun, and paymentId (e.g., 'list returns in error').

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?

Clearly states it refunds money for an order via the Getcourse payment module, with real return to buyer's card. Distinguishes from siblings (no other refund tool).

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?

Specifies 'only for payments through Getcourse platform' and explains dryRun mode. Does not explicitly compare with alternatives but sibling context makes it clear.

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

gc_remove_from_groupsB

Убрать пользователя из групп = закрыть доступ (сохраняет остальные группы). dryRun — предпросмотр.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя.
dryRunNoПоказать изменение без сохранения.
groupIdsYesID групп, из которых убрать (= закрыть доступ).

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behaviors. It only mentions removal and dryRun as preview, omitting side effects, permissions, error handling, or what happens if groups don't exist. This is insufficient for a mutation tool.

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 very short (two sentences) and gets to the point quickly. It is concise and front-loaded, though it sacrifices detail for brevity.

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

Completeness2/5

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

Given no output schema and sibling tools, the description lacks context on success criteria, error scenarios, and prerequisites. It is too minimal for a tool that modifies access rights.

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 adds 'dryRun — preview' but otherwise repeats schema info. No additional semantic value beyond the schema.

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?

The description clearly states 'remove user from groups = close access' with the verb 'remove' and resource 'user from groups'. It distinguishes from sibling tools like 'gc_add_to_groups' by specifying removal and preserving other groups.

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?

The description implies usage (remove user, preserve other groups) but does not explicitly state when to use this tool over alternatives like 'gc_add_to_groups' or 'gc_add_user_to_groups'. No when-not-to-use criteria are provided.

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

gc_remove_from_mailing_categoryC

Убрать пользователя из категории рассылок (по categoryId).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя.
categoryIdYesID категории рассылок (см. gc_list_mailing_categories).

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description only says 'remove', which implies mutation but lacks details on consequences, permissions, or reversibility. This is insufficient for a mutation tool.

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?

One short sentence with no unnecessary words. Efficient but could benefit from a brief outcome note.

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

Completeness2/5

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

For a simple 2-parameter tool with no output schema, the description lacks crucial details like success indicators or error scenarios. It is minimally complete.

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 clear parameter descriptions. The tool description adds minimal value by restating 'by categoryId', but does not provide additional context beyond schema.

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 the action (remove) and resource (mailing category by categoryId). It distinguishes from siblings like gc_add_to_mailing_category as the inverse operation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., gc_remove_from_groups, gc_check_membership). An agent must infer context from sibling names.

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

gc_set_order_statusB

Изменить статус сделки (напр. отменить дубль: status=cancelled + cancelReasonId).

ParametersJSON Schema
NameRequiredDescriptionDefault
dealIdYesID сделки (из gc_find_orders или URL /sales/control/deal/update/id/<id>).
statusYesНовый статус сделки.
cancelReasonIdNoID причины отмены для status=cancelled (напр. «Дубль заказа»=54347 на li-ft.ru).

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as whether the operation is destructive, reversible, or requires authentication. For a mutation tool, this is a significant gap.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the action and a key use case. No redundant information, and the core purpose is front-loaded.

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?

For a simple mutation tool, the description is minimally adequate but lacks details on return values, error handling, or side effects. Without an output schema, more context would help, especially for status changes beyond cancellation.

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 description coverage is 100%, but the description adds valuable context by explaining the use of cancelReasonId and providing a concrete example ID. This enhances understanding beyond the schema, though other parameters are not elaborated.

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 the tool changes deal status and provides an example (cancel duplicate). It distinguishes itself from mutation tools like gc_refund_order or gc_create_order, though it could be more explicit about its scope.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like gc_refund_order or gc_find_orders. The example implies usage for cancellation, but no when-not or prerequisites (e.g., needing dealId from gc_find_orders).

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

gc_statusA

Проверить сессию GetCourse: залогинен ли администратор в браузере по CDP.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It correctly implies a read-only check but does not disclose the return format (e.g., boolean, status object) or any potential side effects. Adequate for a simple tool but could be more explicit.

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

Conciseness5/5

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

A single, focused sentence in Russian that conveys the entire purpose without any extraneous words. Highly efficient.

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 parameterless status-check tool, the description covers the essential aspects: what is checked, who, and how. The only omission is the return value format, but the tool's simplicity makes this a minor gap.

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?

With zero parameters, baseline is 4. The description adds context by specifying the session type (administrator login via CDP), which goes beyond the empty schema.

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?

The description uses a specific verb ('проверить' – check) and resource ('сессию GetCourse' – session), clearly indicating the tool checks the administrator's login session via CDP. This distinguishes it from sibling tools that perform actions like adding, removing, or updating.

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

Usage Guidelines2/5

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

No guidance on when or when not to use this tool compared to siblings. It does not mention prerequisites, context, or alternatives, leaving the agent without decision support for selecting this tool over others.

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

gc_update_userB

Изменить поля профиля на карточке (имя/фамилия/телефон/город/комментарий). Email вне области. dryRun — без сохранения.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoГород.
emailYesEmail пользователя.
phoneNoТелефон.
dryRunNoЗаполнить поля без сохранения.
commentNoКомментарий.
lastNameNoФамилия.
firstNameNoИмя.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool modifies fields and offers a dry run option, but does not mention side effects, authorization needs, rate limits, or what happens on conflict. The constraint about email is useful but minimal.

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

Conciseness5/5

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

Two sentences with no fluff. The most important information (verb, fields, constraint) is front-loaded. Every word serves a purpose.

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 7 parameters and no output schema, the description is adequate but not complete. It explains the main action and dryRun, but does not mention return values, idempotency, or error behavior. It covers the immediate need but leaves gaps for a complex tool.

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?

With 100% schema description coverage, baseline is 3. The description adds value by grouping the modifiable fields and explaining that email is the identifier (not modifiable), and clarifying the dryRun parameter's purpose. This goes beyond the schema's individual descriptions.

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 the verb 'change' and the resource 'profile fields on the card', listing the specific fields. It also notes that email is out of scope, which helps clarify purpose. However, it does not explicitly distinguish from sibling tools, but the context makes it clear.

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?

The description implies usage for updating user profile fields and mentions dryRun for testing without saving, but provides no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions beyond email.

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

gc_user_summaryA

Сводка по пользователю за один вызов: профиль + группы + заказы.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail пользователя.

TDQS

A3.8/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 burden. It indicates the tool returns a summary (profile, groups, orders) but does not explicitly state that it is a read-only operation or disclose any potential side effects.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the tool's purpose. No unnecessary words or repetition.

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?

Given the tool's simplicity (one parameter, no output schema), the description provides enough context to understand the tool's role as a combined summary. It lists the three components but lacks detail on the output format, which could be important for an agent.

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 a single parameter 'email' described as 'User email.' The description adds no additional semantic meaning beyond the schema, so baseline score of 3 is appropriate.

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?

The description clearly states the tool provides a user summary containing profile, groups, and orders in a single call. It differentiates from sibling tools like gc_find_user and gc_list_user_groups by combining multiple data sources.

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?

The description implies that this tool is efficient for retrieving multiple related data at once, but it does not explicitly state when to use it versus alternatives. No exclusions or prerequisites are mentioned.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 19 tool updatesv0.3.0
    • First observedgc_add_to_groups
    • First observedgc_add_to_mailing_category
    • First observedgc_add_user_to_groups
    • First observedgc_check_membership
    • First observedgc_copy_access
    • First observedgc_create_order
    • First observedgc_find_offers
    • First observedgc_find_orders
    • First observedgc_find_user
    • First observedgc_list_mailing_categories
    • First observedgc_list_training_groups
    • First observedgc_list_user_groups
    • First observedgc_refund_order
    • First observedgc_remove_from_groups
    • First observedgc_remove_from_mailing_category
    • First observedgc_set_order_status
    • First observedgc_status
    • First observedgc_update_user
    • First observedgc_user_summary

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes, though gc_add_to_groups and gc_add_user_to_groups both add users to groups, requiring careful reading of descriptions to differentiate (one is clean, the other imports). Overall, descriptions are detailed enough to avoid confusion.

Naming Consistency5/5

All tools follow a consistent gc_verb_noun pattern (e.g., gc_add_to_groups, gc_find_offers), with only minor exceptions like gc_status and gc_user_summary, but the style remains uniform and predictable.

Tool Count5/5

With 19 tools covering user, group, order, and mailing management, the count is well-scoped for a GetCourse MCP server. Each tool serves a clear purpose without unnecessary redundancy.

Completeness4/5

The tool set covers core workflows (CRUD for users, groups, orders) but lacks tools for creating groups or listing all groups. These gaps are minor and can be worked around using existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to programmatically interact with Coursera, including enrolling in courses, completing lectures, solving quizzes, submitting assignments, earning certificates, and pushing them to LinkedIn.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Automate your real Chrome browser locally with AI, supporting vision, human-like input, code execution, macros, and watchdogs.
    15
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/skiddgoddamn/getcourse-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server