Skip to content
CourseProfiler logo

CourseProfiler MCP server

Which MCP servers are CourseProfiler's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-24

← Back to CourseProfiler

Whose server it is
  • Registry namecom.courseprofiler/courseprofilerverified in the MCP registry

The registry name sits under courseprofiler.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-24
  • Stateanswerschecked 2026-10-24
  • Tools26
  • Server calls itselfcourseprofiler
  • Server version0.1.0
  • Protocol version2025-06-18

On 2026-10-24 the server answered initialize and tools/list without a sign-in. First answer in 598 ms.

Should an agent connect itNot proven either way yet
  • Its tools do every use case we checked: generate course segments from GPX route files; estimate personalized race plans for trail courses; compare planned pacing against actual race data.
  • Checked on 4 of the 7 days it takes to judge reliability.

Once connected

  • For "generate course segments from GPX route files", the likely first call is import_course.
  • For "estimate personalized race plans for trail courses", the likely first call is get_race_plan_requirements.
  • For "compare planned pacing against actual race data", the likely first call is compare_execution.
  • create_race_plan change data without a sign-in: anyone with the address can call them.
  • Its definitions take about 17350 tokens of context: enable only the tools a task needs.
  • Parameters are untyped or undescribed in 17 of 26 tools: check arguments before calling.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 4, the first on 2026-10-24
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 4 so far
  • What an agent can do with it3 of 3 use cases
  • Answeredmeasuring4 of the 7 daily checks it takes to print a share
  • Median first answer598 ms
  • Space in an agent's context≈ 17,350 tokensthe definitions of all its tools (26), which an agent carries on every turn
  • Tool definitionsB · 89 of 100
  • Typed results26 of 26 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 17 of 26

What an agent can do with it

  • can do · generate course segments from GPX route files
  • can do · estimate personalized race plans for trail courses
  • can do · compare planned pacing against actual race data

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: create_race_plan

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers26 tools · read 2026-10-24
  • create_race_plan

    Primary CourseProfiler tool for creating a personalized race plan and optional PDF. Use this after obtaining both a course input and runner input. Course input may be course_file, course.source with kind=url/artifact/raw_file, or…

  • search_race_catalog

    Search CourseProfiler's race catalog by race/course name and return direct CRSProf URLs that can be used as course sources.

  • 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…

  • enrich_course_waypoints

    Add structured aid stations, checkpoints, cutoffs, and canonical resources to a CRSProf artifact that lacks them. Before enriching, inspect whether the imported source already contains GPX/CRSProf waypoints; if it already contains…

  • generate_course_segments

    Generate analytical course segments from an enriched CRSProf artifact after waypoint enrichment, or from a catalog CRSProf that already contains official waypoints/resources/cutoffs; then use the resulting artifact in create_race_plan for…

  • generate_runner_profile

    Generate a segment-evidence USRProf runner profile artifact from uploaded runner evidence or an existing .usrprof source. Confirm profile purpose and evidence selection only if not already explicit. Do not silently use every local file…

  • submit_course

    Submit an official/trusted course for CourseProfiler catalog review. This is the only MCP tool that creates a catalog-review submission; import_course, enrich_course_waypoints, and generate_course_segments only create temporary artifacts…

  • get_course_submission_requirements

    Use this before submit_course when the user gives only a race name or incomplete inputs. Returns the catalog-first course submission workflow, accepted route sources, metadata, waypoint enrichment, and upload requirements.

  • get_race_plan_requirements

    Use this before create_race_plan when the user gives only a race name or incomplete inputs. Returns the required course and runner inputs and the next steps an assistant should take, including catalog matches when available.

  • get_runner_profile_requirements

    Use this when runner input is missing or unclear. Explains how to obtain or generate runner input, what USRProf/evidence files should contain, whether GPX/FIT activities are enough, and how hosted MCP clients should upload artifacts.

  • get_artifact_upload_requirements

    Use this when an assistant needs instructions for CourseProfiler's REST artifact upload flow or needs to explain why hosted MCP cannot upload bare local paths. This is an instruction helper, not a raw-byte MCP upload tool.

  • get_job

    Poll a CourseProfiler async job by job_id.

  • get_artifact

    Fetch artifact metadata and a private short-lived download URL by artifact_id. 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…

  • validate_course_profile

    Validate a CRSProf artifact or inline CRSProf JSON before race planning or catalog submission. This does not mutate artifacts or submit courses.

  • validate_runner_profile

    Validate a USRProf artifact or inline USRProf JSON before creating personalized race plans. This does not mutate artifacts or generate a new profile.

  • export_race_plan_pdf

    Export a Hi-Fi PDF or standalone checkpoint card from an existing CRSProf artifact. The CRSProf supplies the course/profile/plan data; options are presentation-only overrides such as title, subtitle, metric/imperial unit system, format…

  • build_runner_profile_from_strava

    Build a USRProf from Strava activities selected for a target course or distance. Ask the user for the target course or distance and, when an existing profile is supplied, explicitly ask whether to merge or replace. Strava credentials are…

  • analyze_activity

    Analyze supplied GPX/FIT directly with the browser's canonical pipeline; no catalog search or runner profile is needed. Accept inline course_file, URL, or artifact source. Existing CRSProf is preserved and summarized. Returns job plus a…

  • inspect_analysis

    Read an existing v3 CRSProf artifact without reanalysis or downloading source points. Query segments, splits, climbs, stops, range, or quality. Pages default to 20 rows (maximum 100); follow next_offset and total_matches. Distances are…

  • compare_execution

    Compare plan and execution v3 CRSProf artifacts with the full browser canonical comparison pipeline. Association defaults to 60 metres; override stop_association_distance_m only when requested. This does not redetect stops: use…

  • inspect_runner_profile

    Read an existing USRProf or uploaded USRProf source artifact without reconstruction, scope replacement or model activation. For chat attachments without artifact IDs, first use import_profile_attachment with explicit upload permission if…

  • assess_finish_time_goal

    Assess a positive elapsed goal including saved dwell using the existing nine intensity/shape combinations (5% shapes). Preserve reference-plan movement locks, stops, checkpoint windows, cutoffs and saved GAP settings. Requires current v3…

  • compare_pacing_strategies

    Compare all nine existing intensity/shape combinations without an elapsed goal. split_percent defaults to 5, inclusive range 0-15. Preserve reference-plan locks, dwell, checkpoint windows, cutoffs and saved GAP settings. Requires current…

  • import_profile_attachment

    Store an attached USRProf or CRSProf unchanged as a private source_file artifact (maximum 25 MiB). Prefer this for ChatGPT attachments when file handoff is available; do not ask the user to copy artifact IDs. Obtain explicit permission to…

  • get_storage_readiness

    Read-only non-secret storage diagnostic. Default checks configuration only. check_bucket=true performs HeadBucket; never writes test objects. Bucket access does not verify job/artifact reads or writes.

  • get_activity_submission

    Read-only lookup of an opt-in analyze_activity submission using the same caller/key. No URL fetches, writes or reanalysis. outcome_unknown is not absence and never authorizes a fresh execution. Requires durable idempotency enabled…

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "courseprofiler": {
      "type": "http",
      "url": "https://courseprofiler.com/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http courseprofiler https://courseprofiler.com/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://courseprofiler.com/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.