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: $.