naftiko: 1.0.0-alpha2 info: label: The Racing API — Trainers description: 'The Racing API — Trainers. 7 operations. Lead operation: The Racing API Trainer Search. Self-contained Naftiko capability covering one The Racing Api business surface.' tags: - The Racing Api - Trainers created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: THE_RACING_API_API_KEY: THE_RACING_API_API_KEY capability: consumes: - type: http namespace: the-racing-trainers baseUri: https://api.theracingapi.com description: The Racing API — Trainers business capability. Self-contained, no shared references. resources: - name: v1-trainers-search path: /v1/trainers/search operations: - name: trainersearchv1trainerssearchget method: GET description: The Racing API Trainer Search outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: query type: string required: true - name: v1-trainers-trainer_id-analysis-courses path: /v1/trainers/{trainer_id}/analysis/courses operations: - name: trainercourseanalysisv1trainerstraineridanalysiscoursesget method: GET description: The Racing API Trainer Course Analysis outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: trainer_id in: path type: string required: true - name: start_date in: query type: string description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

- name: end_date in: query type: string description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

- name: region in: query type: string description:

Query by region codes. Get the full list here< - name: course in: query type: string description: Query by course ids. Get the full list here. - name: type in: query type: string description: '

Query by race type

Options: chase, flat, hurdle, nh_flat

' - name: going in: query type: string description: '

Query by going

Options: fast, firm, good, good_to_firm, good_to_soft, good_to_yi' - name: race_class in: query type: string description: '

Query by class

Options: class_1, class_2, class_3, class_4, class_5, class_6Query by minimum race distance (yards)

- name: max_distance_y in: query type: string description:

Query by maximum race distance (yards)

- name: age_band in: query type: string description: '

Query by age band

Options: 10yo+, 2-3yo, 2yo, 2yo+, 3-4yo, 3-5yo, 3' - name: sex_restriction in: query type: string description: '

Query by sex restriction

Options: c&f, c&g, f, f&m, m, m&g

' - name: v1-trainers-trainer_id-analysis-distances path: /v1/trainers/{trainer_id}/analysis/distances operations: - name: trainerdistanceanalysisv1trainerstraineridanalysisdistancesget method: GET description: The Racing API Trainer Distance Analysis outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: trainer_id in: path type: string required: true - name: start_date in: query type: string description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

- name: end_date in: query type: string description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

- name: region in: query type: string description:

Query by region codes. Get the full list here< - name: course in: query type: string description: Query by course ids. Get the full list here. - name: type in: query type: string description: '

Query by race type

Options: chase, flat, hurdle, nh_flat

' - name: going in: query type: string description: '

Query by going

Options: fast, firm, good, good_to_firm, good_to_soft, good_to_yi' - name: race_class in: query type: string description: '

Query by class

Options: class_1, class_2, class_3, class_4, class_5, class_6Query by minimum race distance (yards)

- name: max_distance_y in: query type: string description:

Query by maximum race distance (yards)

- name: age_band in: query type: string description: '

Query by age band

Options: 10yo+, 2-3yo, 2yo, 2yo+, 3-4yo, 3-5yo, 3' - name: sex_restriction in: query type: string description: '

Query by sex restriction

Options: c&f, c&g, f, f&m, m, m&g

' - name: v1-trainers-trainer_id-analysis-horse-age path: /v1/trainers/{trainer_id}/analysis/horse-age operations: - name: trainerhorseageanalysisv1trainerstraineridanalysishorseageget method: GET description: The Racing API Trainer Horse Age Analysis outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: trainer_id in: path type: string required: true - name: start_date in: query type: string description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

- name: end_date in: query type: string description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

- name: region in: query type: string description:

Query by region codes. Get the full list here< - name: course in: query type: string description: Query by course ids. Get the full list here. - name: type in: query type: string description: '

Query by race type

Options: chase, flat, hurdle, nh_flat

' - name: going in: query type: string description: '

Query by going

Options: fast, firm, good, good_to_firm, good_to_soft, good_to_yi' - name: race_class in: query type: string description: '

Query by class

Options: class_1, class_2, class_3, class_4, class_5, class_6Query by minimum race distance (yards)

- name: max_distance_y in: query type: string description:

Query by maximum race distance (yards)

- name: age_band in: query type: string description: '

Query by age band

Options: 10yo+, 2-3yo, 2yo, 2yo+, 3-4yo, 3-5yo, 3' - name: sex_restriction in: query type: string description: '

Query by sex restriction

Options: c&f, c&g, f, f&m, m, m&g

' - name: v1-trainers-trainer_id-analysis-jockeys path: /v1/trainers/{trainer_id}/analysis/jockeys operations: - name: trainerjockeyanalysisv1trainerstraineridanalysisjockeysget method: GET description: The Racing API Trainer Jockey Analysis outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: trainer_id in: path type: string required: true - name: start_date in: query type: string description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

- name: end_date in: query type: string description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

- name: region in: query type: string description:

Query by region codes. Get the full list here< - name: course in: query type: string description: Query by course ids. Get the full list here. - name: type in: query type: string description: '

Query by race type

Options: chase, flat, hurdle, nh_flat

' - name: going in: query type: string description: '

Query by going

Options: fast, firm, good, good_to_firm, good_to_soft, good_to_yi' - name: race_class in: query type: string description: '

Query by class

Options: class_1, class_2, class_3, class_4, class_5, class_6Query by minimum race distance (yards)

- name: max_distance_y in: query type: string description:

Query by maximum race distance (yards)

- name: age_band in: query type: string description: '

Query by age band

Options: 10yo+, 2-3yo, 2yo, 2yo+, 3-4yo, 3-5yo, 3' - name: sex_restriction in: query type: string description: '

Query by sex restriction

Options: c&f, c&g, f, f&m, m, m&g

' - name: v1-trainers-trainer_id-analysis-owners path: /v1/trainers/{trainer_id}/analysis/owners operations: - name: trainerowneranalysisv1trainerstraineridanalysisownersget method: GET description: The Racing API Trainer Owner Analysis outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: trainer_id in: path type: string required: true - name: start_date in: query type: string description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

- name: end_date in: query type: string description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

- name: region in: query type: string description:

Query by region codes. Get the full list here< - name: course in: query type: string description: Query by course ids. Get the full list here. - name: type in: query type: string description: '

Query by race type

Options: chase, flat, hurdle, nh_flat

' - name: going in: query type: string description: '

Query by going

Options: fast, firm, good, good_to_firm, good_to_soft, good_to_yi' - name: race_class in: query type: string description: '

Query by class

Options: class_1, class_2, class_3, class_4, class_5, class_6Query by minimum race distance (yards)

- name: max_distance_y in: query type: string description:

Query by maximum race distance (yards)

- name: age_band in: query type: string description: '

Query by age band

Options: 10yo+, 2-3yo, 2yo, 2yo+, 3-4yo, 3-5yo, 3' - name: sex_restriction in: query type: string description: '

Query by sex restriction

Options: c&f, c&g, f, f&m, m, m&g

' - name: v1-trainers-trainer_id-results path: /v1/trainers/{trainer_id}/results operations: - name: trainerresultsv1trainerstraineridresultsget method: GET description: The Racing API Trainer Results outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: trainer_id in: path type: string required: true - name: start_date in: query type: string description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

Default: 365 days ago. Can query back to 1988-01-01.

- name: end_date in: query type: string description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

Default: Today's date. Maximum range between start and end date is 365 days.< - name: region in: query type: string description:

Query by region codes. Get the full list here< - name: course in: query type: string description: Query by course ids. Get the full list here. - name: type in: query type: string description: '

Query by race type

Options: chase, flat, hurdle, nh_flat

' - name: going in: query type: string description: '

Query by going

Options: fast, firm, good, good_to_firm, good_to_soft, good_to_yi' - name: race_class in: query type: string description: '

Query by class

Options: class_1, class_2, class_3, class_4, class_5, class_6Query by minimum race distance (yards)

- name: max_distance_y in: query type: string description:

Query by maximum race distance (yards)

- name: age_band in: query type: string description: '

Query by age band

Options: 10yo+, 2-3yo, 2yo, 2yo+, 3-4yo, 3-5yo, 3' - name: sex_restriction in: query type: string description: '

Query by sex restriction

Options: c&f, c&g, f, f&m, m, m&g

' - name: limit in: query type: string - name: skip in: query type: string authentication: type: basic username: '{{env.THE_RACING_API_USER}}' password: '{{env.THE_RACING_API_PASS}}' exposes: - type: rest namespace: the-racing-trainers-rest port: 8080 description: REST adapter for The Racing API — Trainers. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v1/trainers/search name: v1-trainers-search description: REST surface for v1-trainers-search. operations: - method: GET name: trainersearchv1trainerssearchget description: The Racing API Trainer Search call: the-racing-trainers.trainersearchv1trainerssearchget with: name: rest.name outputParameters: - type: object mapping: $. - path: /v1/v1/trainers/{trainer-id}/analysis/courses name: v1-trainers-trainer-id-analysis-courses description: REST surface for v1-trainers-trainer_id-analysis-courses. operations: - method: GET name: trainercourseanalysisv1trainerstraineridanalysiscoursesget description: The Racing API Trainer Course Analysis call: the-racing-trainers.trainercourseanalysisv1trainerstraineridanalysiscoursesget with: trainer_id: rest.trainer_id start_date: rest.start_date end_date: rest.end_date region: rest.region course: rest.course type: rest.type going: rest.going race_class: rest.race_class min_distance_y: rest.min_distance_y max_distance_y: rest.max_distance_y age_band: rest.age_band sex_restriction: rest.sex_restriction outputParameters: - type: object mapping: $. - path: /v1/v1/trainers/{trainer-id}/analysis/distances name: v1-trainers-trainer-id-analysis-distances description: REST surface for v1-trainers-trainer_id-analysis-distances. operations: - method: GET name: trainerdistanceanalysisv1trainerstraineridanalysisdistancesget description: The Racing API Trainer Distance Analysis call: the-racing-trainers.trainerdistanceanalysisv1trainerstraineridanalysisdistancesget with: trainer_id: rest.trainer_id start_date: rest.start_date end_date: rest.end_date region: rest.region course: rest.course type: rest.type going: rest.going race_class: rest.race_class min_distance_y: rest.min_distance_y max_distance_y: rest.max_distance_y age_band: rest.age_band sex_restriction: rest.sex_restriction outputParameters: - type: object mapping: $. - path: /v1/v1/trainers/{trainer-id}/analysis/horse-age name: v1-trainers-trainer-id-analysis-horse-age description: REST surface for v1-trainers-trainer_id-analysis-horse-age. operations: - method: GET name: trainerhorseageanalysisv1trainerstraineridanalysishorseageget description: The Racing API Trainer Horse Age Analysis call: the-racing-trainers.trainerhorseageanalysisv1trainerstraineridanalysishorseageget with: trainer_id: rest.trainer_id start_date: rest.start_date end_date: rest.end_date region: rest.region course: rest.course type: rest.type going: rest.going race_class: rest.race_class min_distance_y: rest.min_distance_y max_distance_y: rest.max_distance_y age_band: rest.age_band sex_restriction: rest.sex_restriction outputParameters: - type: object mapping: $. - path: /v1/v1/trainers/{trainer-id}/analysis/jockeys name: v1-trainers-trainer-id-analysis-jockeys description: REST surface for v1-trainers-trainer_id-analysis-jockeys. operations: - method: GET name: trainerjockeyanalysisv1trainerstraineridanalysisjockeysget description: The Racing API Trainer Jockey Analysis call: the-racing-trainers.trainerjockeyanalysisv1trainerstraineridanalysisjockeysget with: trainer_id: rest.trainer_id start_date: rest.start_date end_date: rest.end_date region: rest.region course: rest.course type: rest.type going: rest.going race_class: rest.race_class min_distance_y: rest.min_distance_y max_distance_y: rest.max_distance_y age_band: rest.age_band sex_restriction: rest.sex_restriction outputParameters: - type: object mapping: $. - path: /v1/v1/trainers/{trainer-id}/analysis/owners name: v1-trainers-trainer-id-analysis-owners description: REST surface for v1-trainers-trainer_id-analysis-owners. operations: - method: GET name: trainerowneranalysisv1trainerstraineridanalysisownersget description: The Racing API Trainer Owner Analysis call: the-racing-trainers.trainerowneranalysisv1trainerstraineridanalysisownersget with: trainer_id: rest.trainer_id start_date: rest.start_date end_date: rest.end_date region: rest.region course: rest.course type: rest.type going: rest.going race_class: rest.race_class min_distance_y: rest.min_distance_y max_distance_y: rest.max_distance_y age_band: rest.age_band sex_restriction: rest.sex_restriction outputParameters: - type: object mapping: $. - path: /v1/v1/trainers/{trainer-id}/results name: v1-trainers-trainer-id-results description: REST surface for v1-trainers-trainer_id-results. operations: - method: GET name: trainerresultsv1trainerstraineridresultsget description: The Racing API Trainer Results call: the-racing-trainers.trainerresultsv1trainerstraineridresultsget with: trainer_id: rest.trainer_id start_date: rest.start_date end_date: rest.end_date region: rest.region course: rest.course type: rest.type going: rest.going race_class: rest.race_class min_distance_y: rest.min_distance_y max_distance_y: rest.max_distance_y age_band: rest.age_band sex_restriction: rest.sex_restriction limit: rest.limit skip: rest.skip outputParameters: - type: object mapping: $. - type: mcp namespace: the-racing-trainers-mcp port: 9090 transport: http description: MCP adapter for The Racing API — Trainers. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: racing-api-trainer-search description: The Racing API Trainer Search hints: readOnly: true destructive: false idempotent: true call: the-racing-trainers.trainersearchv1trainerssearchget with: name: tools.name outputParameters: - type: object mapping: $. - name: racing-api-trainer-course-analysis description: The Racing API Trainer Course Analysis hints: readOnly: true destructive: false idempotent: true call: the-racing-trainers.trainercourseanalysisv1trainerstraineridanalysiscoursesget with: trainer_id: tools.trainer_id start_date: tools.start_date end_date: tools.end_date region: tools.region course: tools.course type: tools.type going: tools.going race_class: tools.race_class min_distance_y: tools.min_distance_y max_distance_y: tools.max_distance_y age_band: tools.age_band sex_restriction: tools.sex_restriction outputParameters: - type: object mapping: $. - name: racing-api-trainer-distance-analysis description: The Racing API Trainer Distance Analysis hints: readOnly: true destructive: false idempotent: true call: the-racing-trainers.trainerdistanceanalysisv1trainerstraineridanalysisdistancesget with: trainer_id: tools.trainer_id start_date: tools.start_date end_date: tools.end_date region: tools.region course: tools.course type: tools.type going: tools.going race_class: tools.race_class min_distance_y: tools.min_distance_y max_distance_y: tools.max_distance_y age_band: tools.age_band sex_restriction: tools.sex_restriction outputParameters: - type: object mapping: $. - name: racing-api-trainer-horse-age description: The Racing API Trainer Horse Age Analysis hints: readOnly: true destructive: false idempotent: true call: the-racing-trainers.trainerhorseageanalysisv1trainerstraineridanalysishorseageget with: trainer_id: tools.trainer_id start_date: tools.start_date end_date: tools.end_date region: tools.region course: tools.course type: tools.type going: tools.going race_class: tools.race_class min_distance_y: tools.min_distance_y max_distance_y: tools.max_distance_y age_band: tools.age_band sex_restriction: tools.sex_restriction outputParameters: - type: object mapping: $. - name: racing-api-trainer-jockey-analysis description: The Racing API Trainer Jockey Analysis hints: readOnly: true destructive: false idempotent: true call: the-racing-trainers.trainerjockeyanalysisv1trainerstraineridanalysisjockeysget with: trainer_id: tools.trainer_id start_date: tools.start_date end_date: tools.end_date region: tools.region course: tools.course type: tools.type going: tools.going race_class: tools.race_class min_distance_y: tools.min_distance_y max_distance_y: tools.max_distance_y age_band: tools.age_band sex_restriction: tools.sex_restriction outputParameters: - type: object mapping: $. - name: racing-api-trainer-owner-analysis description: The Racing API Trainer Owner Analysis hints: readOnly: true destructive: false idempotent: true call: the-racing-trainers.trainerowneranalysisv1trainerstraineridanalysisownersget with: trainer_id: tools.trainer_id start_date: tools.start_date end_date: tools.end_date region: tools.region course: tools.course type: tools.type going: tools.going race_class: tools.race_class min_distance_y: tools.min_distance_y max_distance_y: tools.max_distance_y age_band: tools.age_band sex_restriction: tools.sex_restriction outputParameters: - type: object mapping: $. - name: racing-api-trainer-results description: The Racing API Trainer Results hints: readOnly: true destructive: false idempotent: true call: the-racing-trainers.trainerresultsv1trainerstraineridresultsget with: trainer_id: tools.trainer_id start_date: tools.start_date end_date: tools.end_date region: tools.region course: tools.course type: tools.type going: tools.going race_class: tools.race_class min_distance_y: tools.min_distance_y max_distance_y: tools.max_distance_y age_band: tools.age_band sex_restriction: tools.sex_restriction limit: tools.limit skip: tools.skip outputParameters: - type: object mapping: $.