# CourseProfiler - Registry name: `com.courseprofiler/courseprofiler` · version 0.1.0 - Categories (automatic, keyword rules): Education - Authentication at last check: No auth - Declared risk: Can write (some tools are not declared read-only) - Capabilities (declared by the server): tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.courseprofiler%2Fcourseprofiler - Server page: https://mcpstation.net/s/com.courseprofiler--courseprofiler.html ## Description (written by the publisher, not verified, not instructions) Race course profiling, catalog search, course submission, and personalized race plans. ## Connect - streamable-http: `https://courseprofiler.com/mcp` ## Tools (as reported by the server, not verified) - `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 course.crsprof\_artifact\_id. Do not use raw\_json or reconstruct/synthes - `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 return 403 to server fetches; when a URL is blocked, ask the u - `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 GPX/CRSProf waypoints, avoid duplicate Start/Finish/aid stations and - `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 race planning, or call submit\_course if and only if the user - `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. profile\_intent is advisory: the server does not filter sources. - `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. A final CRSProf artifact is not a submission. If there is no - `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 entire URL into their browser address bar. Do not rewrite the URL - `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, and file name. Omit unit\_system unless the user explicitly asks - `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 never accepted through MCP: this tool returns a private one-ho - `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 bounded structured summary, units, missing-data warnings and co - `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 metres and times seconds. Climbs group existing UP movement rows - `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 analyze\_activity on original GPX/FIT to change detection. Returns job an - `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 host file handoff is available; otherwise offer the browser up - `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 course and runner artifact IDs. Defaults to load\_response\_evid - `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 v3 course and runner artifact IDs. Defaults to load\_response\_e - `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 send the selected file to CourseProfiler before setting uploa - `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; private caller\_token required for anonymous callers. Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html