Skip to main content
Glama

Import course

import_course

Import a fetchable official GPX/FIT/CRSProf URL, official ZIP containing exactly one GPX, uploaded source_file artifact, raw JSON payload, or inline/proxied course_file into a CRSProf artifact. Third-party route hosts such as Wikiloc may return 403 to server fetches; when a URL is blocked, ask the user to download/upload the file through POST /api/artifact-uploads outside MCP and pass the returned source_file artifact ID as source.kind=artifact. For structured answers about a supplied activity, prefer analyze_activity. This is the lower-level artifact-only import; no catalog search, runner profile, or waypoint enrichment is required. For named race planning without a supplied source, search the catalog first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sourceNo
optionsNo
course_fileNoInline/proxied GPX, FIT, CRSProf, or ZIP-with-one-GPX file object to import into CRSProf. Use content for text GPX/XML/JSON/CRSProf, base64 for FIT/ZIP/binary, or url only when the URL is fetchable by CourseProfiler. Bare local filesystem paths and file:// URLs are rejected; hosted clients that cannot proxy file bytes must use the REST POST /api/artifact-uploads flow outside MCP first, then pass the returned source_file artifact via source.kind=artifact.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorsNo
job_idYesCourseProfiler job ID to poll with get_job.
statusYesJob status, e.g. queued, running, succeeded, or failed.
progressNo
warningsNo
created_atNoISO-8601 creation timestamp.
expires_atNoISO-8601 expiration timestamp.
started_atNoISO-8601 start timestamp, when available.
status_urlNoRelative API URL for polling this job.
completed_atNoISO-8601 completion timestamp, when available.
result_artifactsNoArtifacts produced by the job, including role metadata.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / result_artifacts / items / properties / download_url / description
      Previous value: -"Private short-lived download URL. Share only with the user."New value: +"Artifact download URLs are private and short-lived; share them only with the user, verbatim in a code block, not a clickable link. Ask the user to copy the entire URL into their browser address bar. Do not rewrite the URL or add tracking parameters such as utm_source: changes invalidate the signature. If expired, call get_artifact for a fresh URL. This applies only to artifact download_url values, not authorization or upload links."
  2. Changed3 schema fields changed
    • changedInput schema / properties / options / additionalProperties
      Previous value: -trueNew value: +false
    • addedInput schema / properties / options / properties
      Added value: +{
      +  "include_routes": {
      +    "description": "Include routes when analysing GPX/FIT. Existing CRSProf is preserved with analysis_options_not_applied warning.",
      +    "type": "boolean"
      +  },
      +  "include_segments": {
      +    "description": "Generate segments when analysing GPX/FIT. Existing CRSProf is preserved with analysis_options_not_applied warning.",
      +    "type": "boolean"
      +  }
      +}
    • addedInput schema / properties / options / required
      Added value: +[]
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Adds significant behavioral context beyond annotations: server-side fetches may be blocked, file:// URLs are rejected, ZIPs are accepted only when they contain exactly one GPX, and include_routes/include_segments preserve an existing CRSProf with an analysis_options_not_applied warning. It also states that the tool performs no catalog search, runner profile, or waypoint enrichment.

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 front-loaded with the core import statement and the later routing caveats are decision-relevant. It is dense and a bit sprawling, but every sentence earns its place given the tool's complex input modes.

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?

For a tool with three nested parameter groups and multiple input modes, the description covers accepted sources, blocked-fetch fallback, ZIP constraints, file scheme rejection, and sibling-tool routing. With an output schema available, return-value details do not need to be restated.

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 low (33%), but the description compensates by explaining the central source-selection logic: URL vs uploaded artifact vs raw JSON vs inline course_file, and how to pass a pre-uploaded artifact via source.kind=artifact. It does not summarize the options object, though the schema already documents those properties in detail.

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 precise action and object ('Import ... into a CRSProf artifact') and enumerates the accepted input formats. It also differentiates itself from analyze_activity and catalog search by calling itself a lower-level artifact-only import, so an agent can pick it correctly among many siblings.

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?

Explicitly directs users to analyze_activity for structured answers and to search the catalog before named-race planning. It also gives a concrete fallback workflow for 403-blocked URLs: have the user upload via POST /api/artifact-uploads and pass the artifact ID, leaving little ambiguity about when to use this tool vs alternatives.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources