Skip to main content
Glama

delete_published_course

Destructive

End a published course's visibility on its domain while keeping enrollments, progress, and the course intact. Use the published-course ID to set it inactive, free the slug, and allow republishing.

Instructions

Remove a course from its domain. THIS IS A SOFT UNPUBLISH, NOT A DELETION.

    `id` is the published-course id - the publication, not the course.

    Despite the name, nothing is destroyed. It sets `live` to false and frees the
    slug, exactly as `unpublish_published_course` does - the name matches v1's
    DELETE verb rather than the effect. Enrollments, progress and the row itself
    survive, and `republish_published_course` reverses it.

    `unpublish_published_course` is the same operation under a name that says what
    it does; prefer that one unless a caller specifically expects this.

    The course itself is untouched - this only ends its publication on one domain.

    Requires the `published-courses:write` OAuth scope.
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
liveNo
slugNo
course_idNo
domain_idNo
is_hiddenNo
created_atNo
external_idNo
modified_atNo
open_accessNo
visible_on_catalogNo
access_period_ends_atNo
access_period_starts_atNo
visibility_override_typeNo
require_all_prerequisitesNo
allow_self_service_reenrollNo
unique_progress_per_enrollmentNo
restrict_access_start_end_datesNo
strict_enforce_group_visibilityNo
Install Server

TDQS

A4.2/5.0
Behavior1/5

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

The description is extremely transparent about the soft-unpublish behavior, noting that nothing is destroyed, enrollments survive, and republish reverses it. However, the annotations declare destructiveHint=true, which directly contradicts the description's core claim that 'nothing is destroyed.' Per the scoring rule, this contradiction forces a score of 1 and must be flagged as an annotation contradiction.

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 front-loaded with the most important clarification, then builds logically: what happens, what survives, how to reverse it, the preferred alternative, and auth requirements. Every sentence adds necessary value and there is no meaningful redundancy given the misleading tool name.

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

Completeness5/5

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

Despite the misleading name and minimal schema, the description covers the operation's true effect, parameter semantics, reversibility, alternative tool, scope requirement, and what is not affected. An output schema exists, so return-value explanation is unnecessary. The description is fully sufficient for correct invocation; the only inconsistency is in the annotations, not the description.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden for parameter meaning. It completely compensates by explicitly defining id as 'the published-course id - the publication, not the course,' preventing the common confusion between a course id and a publication id.

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 states a clear, specific action: 'Remove a course from its domain' and immediately clarifies that this is a soft unpublish, not a deletion. It explicitly differentiates the publication id from the course and names the sibling unpublish_published_course as the same operation, making the tool's actual purpose unmistakable.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance by stating that unpublish_published_course is the same operation under a better name and should be preferred unless a caller specifically expects this delete-named variant. It also states the required OAuth scope, which is essential for deciding when the tool can be invoked.

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

Other Tools

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/CloudSecurityAlliance/csa-skilljar'

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