Tool tree
gradeNot graded
plan_run_scheduleAction
Build a chronological run schedule from city, distance, pace, and social preferences, then show the same plan on the Runner Agent week board. Use when a runner asks what is coming up or wants a shortlist to act on.
View tool JSON
{
"name": "plan_run_schedule",
"kind": "act",
"impl": "imperative",
"description": "Build a chronological run schedule from city, distance, pace, and social preferences, then show the same plan on the Runner Agent week board. Use when a runner asks what is coming up or wants a shortlist to act on.",
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"enum": [
"Bangkok",
"Chiang Mai",
"Phuket",
"Khon Kaen"
]
},
"distance_km": {
"type": "number",
"enum": [
3,
5,
7,
10
]
},
"pace": {
"type": "string",
"enum": [
"social",
"steady",
"tempo"
]
},
"social_preference": {
"type": "string",
"enum": [
"alcohol_free",
"beer_optional",
"run_only"
]
},
"alcohol_free_required": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}
}save_run_scheduleAction
Build the requested schedule and persist that exact week to the signed-in runner's D1-backed Runner Passport. Use only when the runner asks to remember or save a plan.
View tool JSON
{
"name": "save_run_schedule",
"kind": "act",
"impl": "imperative",
"description": "Build the requested schedule and persist that exact week to the signed-in runner's D1-backed Runner Passport. Use only when the runner asks to remember or save a plan.",
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"enum": [
"Bangkok",
"Chiang Mai",
"Phuket",
"Khon Kaen"
]
},
"distance_km": {
"type": "number",
"enum": [
3,
5,
7,
10
]
},
"pace": {
"type": "string",
"enum": [
"social",
"steady",
"tempo"
]
},
"social_preference": {
"type": "string",
"enum": [
"alcohol_free",
"beer_optional",
"run_only"
]
},
"alcohol_free_required": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}
}get_runner_passportAnswer
Read the signed-in runner's profile, saved run weeks, and Run Pass count from persistent storage. Use this to continue planning from remembered goals without guessing preferences.
View tool JSON
{
"name": "get_runner_passport",
"kind": "answer",
"impl": "imperative",
"description": "Read the signed-in runner's profile, saved run weeks, and Run Pass count from persistent storage. Use this to continue planning from remembered goals without guessing preferences.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}build_runner_support_loopAction
Turn one run into a visible bring, borrow, refill, repair, and give-back plan. Use when a runner asks what to prepare or source without defaulting to shopping. Merchant search remains an optional future handoff and never creates a cart or checkout.
View tool JSON
{
"name": "build_runner_support_loop",
"kind": "act",
"impl": "imperative",
"description": "Turn one run into a visible bring, borrow, refill, repair, and give-back plan. Use when a runner asks what to prepare or source without defaulting to shopping. Merchant search remains an optional future handoff and never creates a cart or checkout.",
"inputSchema": {
"type": "object",
"properties": {
"event_id": {
"type": "string",
"minLength": 2,
"maxLength": 80
}
},
"required": [
"event_id"
],
"additionalProperties": false
}
}search_runner_needAnswer
Search the connected Shopify Storefront MCP catalog for one runner-confirmed gap after bring, borrow, refill, and repair have been checked. Updates the visible Runner Commons panel with external merchant results. Never creates a cart or checkout.
View tool JSON
{
"name": "search_runner_need",
"kind": "answer",
"impl": "imperative",
"description": "Search the connected Shopify Storefront MCP catalog for one runner-confirmed gap after bring, borrow, refill, and repair have been checked. Updates the visible Runner Commons panel with external merchant results. Never creates a cart or checkout.",
"inputSchema": {
"type": "object",
"properties": {
"event_id": {
"type": "string",
"enum": [
"bkk-riverside-5",
"bkk-oldtown-7",
"cnx-moat-5",
"hkt-oldtown-3",
"kkc-lake-10",
"bkk-green-3"
]
},
"need": {
"type": "string",
"enum": [
"reflective_visibility",
"reusable_hydration",
"repair_essentials"
]
}
},
"required": [
"event_id",
"need"
],
"additionalProperties": false
}
}discover_run_eventsAction
Find matching Thailand run-club events by city, distance, pace, date, and post-run social preference. Use this before comparing or registering. Alcohol is always optional.
View tool JSON
{
"name": "discover_run_events",
"kind": "act",
"impl": "imperative",
"description": "Find matching Thailand run-club events by city, distance, pace, date, and post-run social preference. Use this before comparing or registering. Alcohol is always optional.",
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"enum": [
"Bangkok",
"Chiang Mai",
"Phuket",
"Khon Kaen"
]
},
"distance_km": {
"type": "number",
"enum": [
3,
5,
7,
10
]
},
"pace": {
"type": "string",
"enum": [
"social",
"steady",
"tempo"
]
},
"date": {
"type": "string",
"format": "date",
"maxLength": 10
},
"social_preference": {
"type": "string",
"enum": [
"alcohol_free",
"beer_optional",
"run_only"
]
},
"alcohol_free_required": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}
}compare_run_eventsAction
Compare two or three run events side by side using dates, distance, pace, price, capacity, social choices, and safe-return information.
View tool JSON
{
"name": "compare_run_events",
"kind": "act",
"impl": "imperative",
"description": "Compare two or three run events side by side using dates, distance, pace, price, capacity, social choices, and safe-return information.",
"inputSchema": {
"type": "object",
"properties": {
"event_ids": {
"type": "array",
"items": {
"type": "string",
"enum": [
"bkk-riverside-5",
"bkk-oldtown-7",
"cnx-moat-5",
"hkt-oldtown-3",
"kkc-lake-10",
"bkk-green-3"
]
},
"minItems": 2,
"maxItems": 3,
"uniqueItems": true
}
},
"required": [
"event_ids"
],
"additionalProperties": false
}
}get_run_event_detailsAnswer
Get full operational details for one event and make it visible in the shared human interface.
View tool JSON
{
"name": "get_run_event_details",
"kind": "answer",
"impl": "imperative",
"description": "Get full operational details for one event and make it visible in the shared human interface.",
"inputSchema": {
"type": "object",
"properties": {
"event_id": {
"type": "string",
"enum": [
"bkk-riverside-5",
"bkk-oldtown-7",
"cnx-moat-5",
"hkt-oldtown-3",
"kkc-lake-10",
"bkk-green-3"
]
}
},
"required": [
"event_id"
],
"additionalProperties": false
}
}get_event_rulesAnswer
Read run safety, age, alcohol, licensed-venue, transport, health, and choice rules when evaluating participation or registration.
View tool JSON
{
"name": "get_event_rules",
"kind": "answer",
"impl": "imperative",
"description": "Read run safety, age, alcohol, licensed-venue, transport, health, and choice rules when evaluating participation or registration.",
"inputSchema": {
"type": "object",
"properties": {
"event_id": {
"type": "string",
"enum": [
"bkk-riverside-5",
"bkk-oldtown-7",
"cnx-moat-5",
"hkt-oldtown-3",
"kkc-lake-10",
"bkk-green-3"
]
},
"topic": {
"type": "string",
"maxLength": 40
}
},
"additionalProperties": false
}
}check_participation_readinessAnswer
Apply event safety rules to user-provided declarations and return ready, attention, or blocked with next actions. This is not medical advice or diagnosis.
View tool JSON
{
"name": "check_participation_readiness",
"kind": "answer",
"impl": "imperative",
"description": "Apply event safety rules to user-provided declarations and return ready, attention, or blocked with next actions. This is not medical advice or diagnosis.",
"inputSchema": {
"type": "object",
"properties": {
"event_id": {
"type": "string",
"enum": [
"bkk-riverside-5",
"bkk-oldtown-7",
"cnx-moat-5",
"hkt-oldtown-3",
"kkc-lake-10",
"bkk-green-3"
]
},
"age_20_plus": {
"type": "boolean"
},
"has_concerning_symptoms": {
"type": "boolean"
},
"has_hydration_plan": {
"type": "boolean"
},
"transport_mode": {
"type": "string",
"enum": [
"transit",
"taxi",
"walk",
"sober_driver"
]
},
"social_preference": {
"type": "string",
"enum": [
"alcohol_free",
"beer_optional",
"run_only"
]
}
},
"required": [
"event_id",
"age_20_plus",
"has_concerning_symptoms",
"has_hydration_plan",
"transport_mode",
"social_preference"
],
"additionalProperties": false
}
}get_safe_return_optionsAnswer
Get event-specific public transport, taxi, walking, and sober-driver options, with non-driving choices for anyone selecting optional beer.
View tool JSON
{
"name": "get_safe_return_options",
"kind": "answer",
"impl": "imperative",
"description": "Get event-specific public transport, taxi, walking, and sober-driver options, with non-driving choices for anyone selecting optional beer.",
"inputSchema": {
"type": "object",
"properties": {
"event_id": {
"type": "string",
"enum": [
"bkk-riverside-5",
"bkk-oldtown-7",
"cnx-moat-5",
"hkt-oldtown-3",
"kkc-lake-10",
"bkk-green-3"
]
},
"social_preference": {
"type": "string",
"enum": [
"alcohol_free",
"beer_optional",
"run_only"
]
}
},
"required": [
"event_id"
],
"additionalProperties": false
}
}prepare_run_registrationAction
Validate and stage a run registration, then show the summary for the human to review and confirm in the visible page.
View tool JSON
{
"name": "prepare_run_registration",
"kind": "act",
"impl": "imperative",
"description": "Validate and stage a run registration, then show the summary for the human to review and confirm in the visible page.",
"inputSchema": {
"type": "object",
"properties": {
"event_id": {
"type": "string",
"enum": [
"bkk-riverside-5",
"bkk-oldtown-7",
"cnx-moat-5",
"hkt-oldtown-3",
"kkc-lake-10",
"bkk-green-3"
]
},
"runner_name": {
"type": "string",
"minLength": 2,
"maxLength": 80
},
"email": {
"type": "string",
"format": "email",
"maxLength": 120
},
"emergency_contact": {
"type": "string",
"minLength": 8,
"maxLength": 40
},
"pace": {
"type": "string",
"enum": [
"social",
"steady",
"tempo"
]
},
"social_preference": {
"type": "string",
"enum": [
"alcohol_free",
"beer_optional",
"run_only"
]
},
"age_20_plus": {
"type": "boolean"
},
"transport_mode": {
"type": "string",
"enum": [
"transit",
"taxi",
"walk",
"sober_driver"
]
},
"rules_accepted": {
"type": "boolean",
"const": true
},
"privacy_accepted": {
"type": "boolean",
"const": true
}
},
"required": [
"event_id",
"runner_name",
"email",
"emergency_contact",
"pace",
"social_preference",
"age_20_plus",
"transport_mode",
"rules_accepted",
"privacy_accepted"
],
"additionalProperties": false
}
}get_my_run_passesAnswer
List Run Passes from the signed-in Runner Passport, or from this browser in guest mode. Emergency-contact details are always redacted from the result.
View tool JSON
{
"name": "get_my_run_passes",
"kind": "answer",
"impl": "imperative",
"description": "List Run Passes from the signed-in Runner Passport, or from this browser in guest mode. Emergency-contact details are always redacted from the result.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}cancel_run_registrationSensitive Action
Cancel a run pass only after the user explicitly confirms cancellation. If confirmed is false, return confirmation_required without changing anything.
View tool JSON
{
"name": "cancel_run_registration",
"kind": "transact",
"impl": "imperative",
"description": "Cancel a run pass only after the user explicitly confirms cancellation. If confirmed is false, return confirmation_required without changing anything.",
"inputSchema": {
"type": "object",
"properties": {
"pass_id": {
"type": "string",
"minLength": 8,
"maxLength": 80
},
"confirmed": {
"type": "boolean"
}
},
"required": [
"pass_id",
"confirmed"
],
"additionalProperties": false
}
}