CourseProfiler
REMOTE · COURSEPROFILER.COM · SCANNED AUG 3
Race course profiling, catalog search, course submission, and personalized race plans.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 16 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability27
- AI-judged instruction clarity (poor).Fail
- Context-footprint check failed: tool/resource definitions use about 3900 tokens (~243/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage88
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 59% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · courseprofiler.com
claude mcp add --transport http com-courseprofiler-courseprofiler https://courseprofiler.com/mcp
[mcp_servers.com-courseprofiler-courseprofiler] url = "https://courseprofiler.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-courseprofiler-courseprofiler": {
"type": "remote",
"url": "https://courseprofiler.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-courseprofiler-courseprofiler --url https://courseprofiler.com/mcp --transport streamable-http
mcp_servers:
com-courseprofiler-courseprofiler:
url: "https://courseprofiler.com/mcp" {
"mcpServers": {
"com-courseprofiler-courseprofiler": {
"type": "http",
"url": "https://courseprofiler.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +3
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 49
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://courseprofiler.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=courseprofiler.com | CN=Amazon RSA 2048 M01,O=Amazon,C=US | 13 Oct 2025 | 11 Nov 2026 | RSA 2048 | SHA256-RSA | c84df1f2bd201804871057a991b8c7f |
| SANs: courseprofiler.com, www.courseprofiler.com | ||||||
| CN=Amazon RSA 2048 M01,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 77312380b9d6688a33b1ed9bf9ccda68e0e0f |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
DNSSEC insecure
Validation of courseprofiler.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| courseprofiler.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://courseprofiler.com/mcp | Verified | 200 | |
| http (plaintext) | http://courseprofiler.com/mcp | HTTPS enforced | 301 | https://courseprofiler.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
create_race_plan Create race plan ~1,233
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/synthesize a course from roadbooks, checkpoint tables, elevation profiles, aid-station lists, or screenshots; those are enrichment/context only and are not valid course geometry. Runner input may be runner_profile_file, runner.sources, or runner.usrprof_artifact_id. Prefer generate_runner_profile first when the user has GPX/FIT/CRSProf activity evidence or an uploaded .usrprof source but no already-converted usrprof_artifact_id; then call create_race_plan with runner.usrprof_artifact_id. Before generating a runner profile for a race plan, resolve the target course if possible and ask the user whether the profile should be target-race-specific, target-distance/elevation-specific, general trail, or insights-only; select evidence that matches the intended distance, elevation gain/loss, terrain/technicality, altitude, duration, and recency. Do not silently use all files in a local folder. Use runner.usrprof_artifact_id only for an already-converted USRProf artifact; uploaded .usrprof/source_file artifacts from POST /api/artifact-uploads must be passed through runner.sources[{kind:'artifact'}] or through generate_runner_profile. Bare local filesystem paths never work in hosted MCP clients; send inline content/base64 when the MCP client can read the file, or use the REST POST /api/artifact-uploads flow outside MCP, complete the upload, then pass the returned source_file artifact ID. There is no raw-byte MCP upload tool; get_artifact_upload_requirements only explains the REST flow. Use get_runner_profile_requirements when the user needs instructions for creating/exporting a USRProf, using Strava/browser import, or uploading GPX/FIT/CRSProf evidence. If the user provides only a race na…
| Name | Type | Req | Description |
|---|---|---|---|
| course | object | — | — |
| course_file | object | — | Use this only when the MCP client provides an inline/proxied GPX, FIT, CRSProf, or ZIP-with-one-GPX file object. Provide content for text GPX/XML/JSON/CRSProf, base64 for FIT/ZIP/binary, or a fetchab… |
| estimate | object | — | — |
| object | — | — | |
| race_name | string | — | Race/course name to resolve through the CourseProfiler catalog when no course source is provided, e.g. Val d'Aran PDA. |
| runner | object | — | — |
| runner_profile_file | object | — | Use this only when the MCP client provides an inline/proxied USRProf runner profile file object. Provide content for text USRProf/JSON or base64 for binary. Personalized plans require runner input. B… |
| Name | Type | Req | Description |
|---|---|---|---|
| completed_at | string | — | ISO-8601 completion timestamp, when available. |
| created_at | string | — | ISO-8601 creation timestamp. |
| errors | array | — | — |
| expires_at | string | — | ISO-8601 expiration timestamp. |
| job_id | string | yes | CourseProfiler job ID to poll with get_job. |
| progress | object | — | — |
| result_artifacts | array | — | Artifacts produced by the job, including role metadata. |
| started_at | string | — | ISO-8601 start timestamp, when available. |
| status | string | yes | Job status, e.g. queued, running, succeeded, or failed. |
| status_url | string | — | Relative API URL for polling this job. |
| warnings | array | — | — |
No examples provided.
enrich_course_waypoints Enrich course waypoints ~181
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 prefer merging/updating resources, cutoffs, notes, or links on existing waypoint metadata. Prefer waypoints.mode=structured; put non-canonical/free-text aid details in notes/source text because unsupported resource strings are ignored with warnings. Route-only plans should be labeled incomplete unless the CRSProf already includes official waypoints/resources/cutoffs or the user explicitly accepts missing aid/resource details.
| Name | Type | Req | Description |
|---|---|---|---|
| crsprof_artifact_id | string | yes | CRSProf artifact ID returned by import_course or get_artifact. |
| waypoints | object | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| completed_at | string | — | ISO-8601 completion timestamp, when available. |
| created_at | string | — | ISO-8601 creation timestamp. |
| errors | array | — | — |
| expires_at | string | — | ISO-8601 expiration timestamp. |
| job_id | string | yes | CourseProfiler job ID to poll with get_job. |
| progress | object | — | — |
| result_artifacts | array | — | Artifacts produced by the job, including role metadata. |
| started_at | string | — | ISO-8601 start timestamp, when available. |
| status | string | yes | Job status, e.g. queued, running, succeeded, or failed. |
| status_url | string | — | Relative API URL for polling this job. |
| warnings | array | — | — |
No examples provided.
export_race_plan_pdf Export race plan PDF ~103
Export a Hi-Fi PDF 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, and file name. Omit unit_system unless the user explicitly asks for metric or imperial.
| Name | Type | Req | Description |
|---|---|---|---|
| crsprof_artifact_id | string | yes | Existing CRSProf artifact ID containing the course/profile/plan data to render. |
| options | object | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| completed_at | string | — | ISO-8601 completion timestamp, when available. |
| created_at | string | — | ISO-8601 creation timestamp. |
| errors | array | — | — |
| expires_at | string | — | ISO-8601 expiration timestamp. |
| job_id | string | yes | CourseProfiler job ID to poll with get_job. |
| progress | object | — | — |
| result_artifacts | array | — | Artifacts produced by the job, including role metadata. |
| started_at | string | — | ISO-8601 start timestamp, when available. |
| status | string | yes | Job status, e.g. queued, running, succeeded, or failed. |
| status_url | string | — | Relative API URL for polling this job. |
| warnings | array | — | — |
No examples provided.
generate_course_segments Generate course segments ~115
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 asked to submit a course for catalog review. A generated CRSProf artifact is not a catalog submission.
| Name | Type | Req | Description |
|---|---|---|---|
| crsprof_artifact_id | string | yes | Enriched CRSProf artifact ID returned by enrich_course_waypoints. |
| options | object | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| completed_at | string | — | ISO-8601 completion timestamp, when available. |
| created_at | string | — | ISO-8601 creation timestamp. |
| errors | array | — | — |
| expires_at | string | — | ISO-8601 expiration timestamp. |
| job_id | string | yes | CourseProfiler job ID to poll with get_job. |
| progress | object | — | — |
| result_artifacts | array | — | Artifacts produced by the job, including role metadata. |
| started_at | string | — | ISO-8601 start timestamp, when available. |
| status | string | yes | Job status, e.g. queued, running, succeeded, or failed. |
| status_url | string | — | Relative API URL for polling this job. |
| warnings | array | — | — |
No examples provided.
generate_runner_profile Generate runner profile ~587
Generate a segment-evidence USRProf runner profile artifact from uploaded runner evidence or an existing .usrprof source. Before using this tool, ask what profile the user wants: target race/course, target distance/elevation range, general trail profile, or insights-only profile. Do not silently use every local file or arbitrary folders; if many evidence files are available, summarize candidates and ask the user to approve a selection strategy. A USRProf is not just average pace: CourseProfiler uses segment evidence to estimate climbs, descents, runnable grades, fatigue/durability, terrain fit, uphill running limits, and pacing confidence. Evidence choice affects race-plan times and standalone athlete insights. Use this when the user does not already have an already-converted usrprof_artifact_id. Accepted evidence includes GPX/FIT/CRSProf activity files, ZIP/TAR/TAR.GZ/TGZ/TAR.XZ/TXZ archives containing those files, and .usrprof files passed as source_file artifacts from POST /api/artifact-uploads, raw_file inline content/base64, or fetchable HTTPS URLs. Archives must use purpose runner_evidence, are expanded server-side, and report skipped nested archives, duplicate contents, unsupported entries, and parse failures by filename/path. For Strava, ask the user to authenticate in the CourseProfiler browser app, use its activity filters (date, distance, elevation gain, and elapsed time) to fetch relevant Run/TrailRun activities, select activities matching the profile intent, and export/download the .usrprof; do not ask for Strava credentials in MCP. Once the browser Strava flow has produced a downloaded .usrprof, the profile is already created: do not call generate_runner_profile merely to recreate/repackage it. If the user only asked to create/download a profile, stop there. If the user wants to use that .usrprof for a race plan through MCP, upload/pass it as runner input. After this tool succeeds, pass the returned usrprof artifact ID to create_race_plan as runner.us…
| Name | Type | Req | Description |
|---|---|---|---|
| import_options | object | — | — |
| profile_intent | object | — | — |
| sources | array | yes | Runner evidence/profile sources. Use uploaded source_file artifact IDs from POST /api/artifact-uploads with purpose runner_evidence for GPX/FIT/CRSProf activities or ZIP/TAR/TAR.GZ/TGZ/TAR.XZ/TXZ arc… |
| Name | Type | Req | Description |
|---|---|---|---|
| completed_at | string | — | ISO-8601 completion timestamp, when available. |
| created_at | string | — | ISO-8601 creation timestamp. |
| errors | array | — | — |
| expires_at | string | — | ISO-8601 expiration timestamp. |
| job_id | string | yes | CourseProfiler job ID to poll with get_job. |
| progress | object | — | — |
| result_artifacts | array | — | Artifacts produced by the job, including role metadata. |
| started_at | string | — | ISO-8601 start timestamp, when available. |
| status | string | yes | Job status, e.g. queued, running, succeeded, or failed. |
| status_url | string | — | Relative API URL for polling this job. |
| warnings | array | — | — |
No examples provided.
get_artifact Get artifact ~41
Fetch artifact metadata and a private short-lived download URL by artifact_id.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | CourseProfiler artifact ID, e.g. art_... |
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | CourseProfiler artifact ID. |
| content_type | string | — | MIME content type. |
| created_at | string | — | ISO-8601 creation timestamp. |
| download_url | string | — | Private short-lived download URL. Share only with the user. |
| download_url_expires_at | string | — | ISO-8601 download URL expiration timestamp. |
| expires_at | string | — | ISO-8601 artifact expiration timestamp. |
| file_name | string | — | Suggested file name. |
| metadata | object | — | — |
| size_bytes | integer | — | Artifact size in bytes. |
| type | string | yes | Artifact type, e.g. crsprof, usrprof, pdf, json, or source_file. |
| warnings | array | — | — |
No examples provided.
get_artifact_upload_requirements Get artifact upload requirements ~54
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| accepted_mcp_file_forms | array | yes | — |
| local_file_guidance | string | yes | Guidance for local file paths and hosted MCP clients. |
| purposes | object | yes | — |
| upload_flow | array | yes | — |
| usage_after_upload | array | yes | — |
| warnings | array | yes | — |
| workflow | string | yes | — |
No examples provided.
get_course_submission_requirements Get course submission requirements ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| has_waypoint_data | boolean | — | Whether official waypoint/resource/cutoff data is already available. |
| known_course_url | string | — | Optional candidate official direct GPX/FIT/CRSProf/ZIP URL if already found. |
| race_name | string | — | Optional race/course name the user wants to submit, e.g. Quebec Mega Trail 30K. |
| Name | Type | Req | Description |
|---|---|---|---|
| catalog_matches | array | — | — |
| next_steps | array | — | — |
| race_name | string | — | Race name supplied by the user, if any. |
| required_inputs | object | — | — |
| warnings | array | — | — |
| workflow | string | yes | Always course_submission_requirements. |
No examples provided.
get_job Get job ~36
Poll a CourseProfiler async job by job_id.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | CourseProfiler job ID, e.g. job_... |
| Name | Type | Req | Description |
|---|---|---|---|
| completed_at | string | — | ISO-8601 completion timestamp, when available. |
| created_at | string | — | ISO-8601 creation timestamp. |
| errors | array | — | — |
| expires_at | string | — | ISO-8601 expiration timestamp. |
| job_id | string | yes | CourseProfiler job ID to poll with get_job. |
| progress | object | — | — |
| result_artifacts | array | — | Artifacts produced by the job, including role metadata. |
| started_at | string | — | ISO-8601 start timestamp, when available. |
| status | string | yes | Job status, e.g. queued, running, succeeded, or failed. |
| status_url | string | — | Relative API URL for polling this job. |
| warnings | array | — | — |
No examples provided.
get_race_plan_requirements Get race plan requirements ~123
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.
| Name | Type | Req | Description |
|---|---|---|---|
| has_runner_profile | boolean | — | Whether the user already provided a USRProf runner profile or runner evidence. |
| known_course_url | string | — | Optional candidate direct GPX/FIT/CRSProf URL if already found. |
| race_name | string | — | Optional race name the user mentioned, e.g. Val d'Aran PDA. |
| Name | Type | Req | Description |
|---|---|---|---|
| catalog_matches | array | — | — |
| course_acquisition_fallback | object | — | — |
| next_steps | array | — | — |
| race_name | string | — | Race name supplied by the user, if any. |
| required_inputs | object | — | — |
| workflow | string | yes | Always race_plan_requirements. |
No examples provided.
get_runner_profile_requirements Get runner profile requirements ~59
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| accepted_inputs | array | yes | — |
| ask_before_generating | array | — | — |
| evidence_guidance | object | yes | — |
| how_to_get_usrprof | array | yes | — |
| profile_purpose | object | — | — |
| recommended | object | — | — |
| required_fields | array | — | — |
| upload_flow | array | yes | — |
| warnings | array | yes | — |
| workflow | string | yes | — |
No examples provided.
import_course Import course ~247
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. Use this on catalog misses before waypoint enrichment.
| Name | Type | Req | Description |
|---|---|---|---|
| course_file | object | — | Inline/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 b… |
| options | object | — | — |
| source | object | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| completed_at | string | — | ISO-8601 completion timestamp, when available. |
| created_at | string | — | ISO-8601 creation timestamp. |
| errors | array | — | — |
| expires_at | string | — | ISO-8601 expiration timestamp. |
| job_id | string | yes | CourseProfiler job ID to poll with get_job. |
| progress | object | — | — |
| result_artifacts | array | — | Artifacts produced by the job, including role metadata. |
| started_at | string | — | ISO-8601 start timestamp, when available. |
| status | string | yes | Job status, e.g. queued, running, succeeded, or failed. |
| status_url | string | — | Relative API URL for polling this job. |
| warnings | array | — | — |
No examples provided.
search_race_catalog Search race catalog ~71
Search CourseProfiler's race catalog by race/course name and return direct CRSProf URLs that can be used as course sources.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Maximum matches to return, default 5. |
| query | string | yes | Race or course name to search, e.g. Val d'Aran PDA. |
| Name | Type | Req | Description |
|---|---|---|---|
| matches | array | yes | — |
| query | string | yes | Search query. |
No examples provided.
submit_course Submit course ~798
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 submission_id in the submit_course result, the course has not been submitted. Use this only when the user asked to submit/add/update a course in the catalog. Do not call submit_course for normal race-plan creation; create_race_plan does not require catalog submission. Before calling submit_course, collect and pass event metadata from official sources whenever available: main event/race name, specific course name, year/date, start time, location/city/region and country, distance, elevation gain, organizer, applicable tags/types, competitions/series, official race page, route source URL, aid-chart/regulation URLs, and other source URLs. Use metadata.event.name for the main event and metadata.event.course for the specific course (example: name='Speedgoat Mountain Races', course='50K'); do not put distance/elevation stats in the course name (bad: 'Skyrace — 32 km, +2400 m'); location must not include country because metadata.event.country is separate. Add metadata.event.types tags where they apply, and metadata.event.competitions for circuits/series/championships such as Golden Trail World Series (GTWS). Put the race start time in metadata.event.time when known. Put catalog UI event links in metadata.event.links, not just metadata.source_urls; supported types include info, registration, rules, schedule, course, cutoff, parking, bib_pickup, wardrobe, results, and contact. Include official General Information (type=info), Registration (registration), Rules/Regulations (rules), Schedule/Program (schedule), Course (course), Cut-off times (cutoff), Parking (parking), Bib pick-up (bib_pickup), Wardrobe/drop bag (wardrobe), Results (results), and Contact (contact) links when availa…
| Name | Type | Req | Description |
|---|---|---|---|
| course | object | yes | — |
| course_file | object | — | Inline/proxied GPX, FIT, CRSProf, or ZIP-with-one-GPX file object to import. Use content for text GPX/XML/JSON/CRSProf or base64 for FIT/ZIP/binary. Bare local filesystem paths and file:// URLs are r… |
| metadata | object | — | — |
| original_file_name | string | — | Optional original route/profile file name for review metadata. |
| race_name | string | — | Race/course name to submit. Assistants should search the catalog and official web sources before calling submit_course, then populate metadata.event from official sources, including metadata.event.ti… |
| submitter | object | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| completed_at | string | — | ISO-8601 completion timestamp, when available. |
| created_at | string | — | ISO-8601 creation timestamp. |
| errors | array | — | — |
| expires_at | string | — | ISO-8601 expiration timestamp. |
| job_id | string | yes | CourseProfiler job ID to poll with get_job. |
| progress | object | — | — |
| result_artifacts | array | — | Artifacts produced by the job, including role metadata. |
| started_at | string | — | ISO-8601 start timestamp, when available. |
| status | string | yes | Job status, e.g. queued, running, succeeded, or failed. |
| status_url | string | — | Relative API URL for polling this job. |
| warnings | array | — | — |
No examples provided.
validate_course_profile Validate course profile ~63
Validate a CRSProf artifact or inline CRSProf JSON before race planning or catalog submission. This does not mutate artifacts or submit courses.
| Name | Type | Req | Description |
|---|---|---|---|
| crsprof | object | — | — |
| crsprof_artifact_id | string | — | Existing CRSProf artifact ID to validate. |
| Name | Type | Req | Description |
|---|---|---|---|
| artifact | object | — | — |
| errors | array | — | — |
| valid | boolean | yes | True when the supplied profile validates. |
| warnings | array | — | — |
No examples provided.
validate_runner_profile Validate runner profile ~65
Validate a USRProf artifact or inline USRProf JSON before creating personalized race plans. This does not mutate artifacts or generate a new profile.
| Name | Type | Req | Description |
|---|---|---|---|
| usrprof | object | — | — |
| usrprof_artifact_id | string | — | Existing USRProf artifact ID to validate. |
| Name | Type | Req | Description |
|---|---|---|---|
| artifact | object | — | — |
| errors | array | — | — |
| valid | boolean | yes | True when the supplied profile validates. |
| warnings | array | — | — |
No examples provided.