Australia Wide First Aid courses
Find first aid and CPR courses, venues and sessions across Australia. Read-only; no sign-in.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"courses": {
"url": "https://www.australiawidefirstaid.com/mcp"
}
}
}Remote endpoints
https://www.australiawidefirstaid.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
🟢get_course_details(course)
Full details for one course: what it covers, how it is assessed, the pre-course online work, what to bring, when the certificate is issued, and how long it stays current. Use it to answer whether a course meets a workplace or childcare requirement. course is the id from list_courses; a unit code such as HLTAID011 also works.
Input Schema
{
"type": "object",
"properties": {
"course": {
"description": "The course's id, unit code, workshops course id or name.",
"type": "string"
}
},
"required": [
"course"
]
}Output Schema
{
"type": "object",
"properties": {
"assessment": {
"description": "How the course is assessed.",
"items": {
"type": "string"
},
"type": "array"
},
"certificate": {
"description": "How and when the certificate is issued.",
"items": {
"type": "string"
},
"type": "array"
},
"code": {
"description": "The national unit code, such as HLTAID011.",
"type": "string"
},
"content": {
"description": "What the course covers.",
"items": {
"type": "string"
},
"type": "array"
},
"delivery": {
"description": "How the course is delivered, including any e-Learning pre-work.",
"items": {
"type": "string"
},
"type": "array"
},
"duration": {
"description": "How long the course takes, as the site describes it.",
"items": {
"type": "string"
},
"type": "array"
},
"headline": {
"description": "The course page's headline.",
"type": "string"
},
"id": {
"description": "The course's slug, such as first-aid. Every other endpoint accepts it as course.",
"type": "string"
},
"key_points": {
"description": "The course's key points.",
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"description": "The course's short name.",
"type": "string"
},
"official_name": {
"description": "The unit's official name.",
"type": "string"
},
"price_aud": {
"description": "The standard price in Australian dollars, GST included.",
"type": "integer"
},
"price_display": {
"description": "The price as the site shows it, such as $97.",
"type": "string"
},
"renewal": {
"description": "How often the certificate should be renewed.",
"type": "string"
},
"summary": {
"description": "A one-line summary.",
"type": "string"
},
"url": {
"description": "The course's page on the site.",
"format": "uri",
"type": "string"
},
"what_to_bring": {
"description": "What to bring on the day.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"code",
"name",
"url"
],
"additionalProperties": false,
"description": "A course with its details."
}🟢get_faqs(topic)
Frequently asked questions and answers: which course a job needs, recognition, certificate timing, renewal, online learning, group training, cost, what to wear. Pass a topic to get the most relevant ones; omit it for all.
Input Schema
{
"type": "object",
"properties": {
"topic": {
"description": "A question or topic, such as How do I renew my certificate.",
"type": "string"
}
}
}Output Schema
{
"type": "object",
"properties": {
"faqs": {
"items": {
"additionalProperties": false,
"properties": {
"answer": {
"type": "string"
},
"question": {
"type": "string"
}
},
"required": [
"question",
"answer"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"faqs"
],
"additionalProperties": false
}🟢list_courses
List the nationally recognised first aid and CPR courses Australia Wide First Aid runs, with unit code (HLTAID009/011/012), price in AUD, duration, delivery (including any online pre-course learning) and renewal period. Use this to turn a need like "first aid for work" or "childcare certificate" into a course id for the other tools.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"courses": {
"items": {
"additionalProperties": false,
"description": "A bookable course.",
"properties": {
"code": {
"description": "The national unit code, such as HLTAID011.",
"type": "string"
},
"delivery": {
"description": "How the course is delivered, including any e-Learning pre-work.",
"items": {
"type": "string"
},
"type": "array"
},
"duration": {
"description": "How long the course takes, as the site describes it.",
"items": {
"type": "string"
},
"type": "array"
},
"id": {
"description": "The course's slug, such as first-aid. Every other endpoint accepts it as course.",
"type": "string"
},
"name": {
"description": "The course's short name.",
"type": "string"
},
"official_name": {
"description": "The unit's official name.",
"type": "string"
},
"price_aud": {
"description": "The standard price in Australian dollars, GST included.",
"type": "integer"
},
"price_display": {
"description": "The price as the site shows it, such as $97.",
"type": "string"
},
"renewal": {
"description": "How often the certificate should be renewed.",
"type": "string"
},
"summary": {
"description": "A one-line summary.",
"type": "string"
},
"url": {
"description": "The course's page on the site.",
"format": "uri",
"type": "string"
}
},
"required": [
"id",
"code",
"name",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"courses"
],
"additionalProperties": false
}🟢list_locations(limit, near, state)
List training venues with address, grouped by state. Pass state to narrow to one state, or near (an Australian postcode or suburb the person gives you, such as "4510" or "Caboolture QLD") to get the closest venues with their distance in km. The id of a venue is the location for search_sessions.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 10,
"description": "With near, how many venues to return. Values below 1 use the default.",
"type": "integer"
},
"near": {
"description": "A postcode or suburb, optionally with its state, such as 4510 or Caboolture QLD.",
"type": "string"
},
"state": {
"description": "A state or territory, such as QLD, in any case. Ignored when near is given.",
"type": "string"
}
}
}Output Schema
{
"type": "object",
"properties": {
"locations": {
"description": "The venues; null when there are none.",
"items": {
"additionalProperties": false,
"description": "A training venue.",
"properties": {
"address": {
"type": "string"
},
"distance_km": {
"description": "The distance from near in kilometres, to one decimal place. Present only on distance-ordered results.",
"type": "number"
},
"id": {
"description": "The venue's id. The session endpoints accept it as location.",
"type": "string"
},
"name": {
"type": "string"
},
"postcode": {
"type": "string"
},
"state": {
"description": "The state or territory, such as QLD.",
"type": "string"
},
"suburb": {
"type": "string"
}
},
"required": [
"id",
"name",
"state"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"near": {
"additionalProperties": false,
"description": "With near, the place it resolved to, or null when the lookup didn't say.",
"properties": {
"postcode": {
"type": "string"
},
"state": {
"type": "string"
},
"suburb": {
"type": "string"
}
},
"required": [],
"type": [
"object",
"null"
]
}
},
"required": [
"locations"
],
"additionalProperties": false
}🟢search_nearby_sessions(course, date_from, date_to, limit, near, ...)
Upcoming sessions of one course across the venues closest to a postcode or suburb, merged soonest first, with each venue's distance in km. near is required: this server can't tell where the person is, so ask them for their postcode or suburb. If a suburb exists in several states the reply lists the candidates: ask which one and retry with the state or postcode.
Input Schema
{
"type": "object",
"properties": {
"course": {
"description": "The course's id, unit code, workshops course id or name, as getCourseDetails accepts.",
"type": "string"
},
"date_from": {
"description": "The first date to search, YYYY-MM-DD in Australia/Brisbane time. Defaults to today; a past date means today.",
"format": "date",
"type": "string"
},
"date_to": {
"description": "The last date to search, YYYY-MM-DD. Defaults to 60 days after date_from and is capped at 365 days after it.",
"format": "date",
"type": "string"
},
"limit": {
"default": 10,
"description": "How many sessions to return. Larger values are capped at 50; values below 1 use the default.",
"maximum": 50,
"type": "integer"
},
"near": {
"description": "The person's Australian postcode or suburb, optionally with its state, such as 4510 or Caboolture QLD. Required: ask the person for it.",
"type": "string"
},
"venues": {
"default": 3,
"description": "How many of the closest venues to search. Larger values are capped at 5; values below 1 use the default.",
"maximum": 5,
"type": "integer"
}
},
"required": [
"course",
"near"
]
}Output Schema
{
"type": "object",
"properties": {
"near": {
"additionalProperties": false,
"description": "The place near resolved to.",
"properties": {
"postcode": {
"type": "string"
},
"state": {
"type": "string"
},
"suburb": {
"type": "string"
}
},
"required": [],
"type": "object"
},
"sessions": {
"description": "The sessions, soonest first; null when there are none.",
"items": {
"additionalProperties": false,
"description": "A bookable session.",
"properties": {
"booking_page": {
"description": "The site's course finder, preselected for this course and venue. The person books there and pays on the enrolment site.",
"format": "uri",
"type": "string"
},
"course": {
"description": "The course's id (slug).",
"type": "string"
},
"course_code": {
"description": "The national unit code.",
"type": "string"
},
"course_id": {
"description": "The workshops course id.",
"type": "integer"
},
"course_name": {
"type": "string"
},
"date": {
"description": "The session date, YYYY-MM-DD.",
"format": "date",
"type": "string"
},
"date_display": {
"description": "The date as the site shows it, such as Tuesday 20 October.",
"type": "string"
},
"price_aud": {
"description": "The price in Australian dollars, GST included. A special price replaces the standard one.",
"type": "number"
},
"price_display": {
"description": "The price as the site shows it.",
"type": "string"
},
"seats": {
"description": "The seats left as the site shows them, such as 5+. Never the exact vacancy count.",
"type": "string"
},
"session_id": {
"description": "The session's id.",
"type": "string"
},
"time": {
"description": "The start and finish time as the site shows it.",
"type": "string"
},
"venue": {
"additionalProperties": false,
"description": "A training venue.",
"properties": {
"address": {
"type": "string"
},
"distance_km": {
"description": "The distance from near in kilometres, to one decimal place. Present only on distance-ordered results.",
"type": "number"
},
"id": {
"description": "The venue's id. The session endpoints accept it as location.",
"type": "string"
},
"name": {
"type": "string"
},
"postcode": {
"type": "string"
},
"state": {
"description": "The state or territory, such as QLD.",
"type": "string"
},
"suburb": {
"type": "string"
}
},
"required": [
"id",
"name",
"state"
],
"type": "object"
}
},
"required": [
"session_id",
"course",
"course_id",
"course_name",
"date",
"date_display",
"time",
"price_aud",
"price_display",
"seats",
"venue",
"booking_page"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"venues_searched": {
"description": "The venues searched, nearest first.",
"items": {
"additionalProperties": false,
"description": "A training venue.",
"properties": {
"address": {
"type": "string"
},
"distance_km": {
"description": "The distance from near in kilometres, to one decimal place. Present only on distance-ordered results.",
"type": "number"
},
"id": {
"description": "The venue's id. The session endpoints accept it as location.",
"type": "string"
},
"name": {
"type": "string"
},
"postcode": {
"type": "string"
},
"state": {
"description": "The state or territory, such as QLD.",
"type": "string"
},
"suburb": {
"type": "string"
}
},
"required": [
"id",
"name",
"state"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"venues_searched",
"sessions"
],
"additionalProperties": false
}🟢search_sessions(course, date_from, date_to, limit, location)
Upcoming sessions of one course at one venue, soonest first: date, time, venue address, price, seats available (as the site shows them, such as "5+") and a session_id for start_booking. If the person gave a suburb or postcode rather than a venue, use search_nearby_sessions instead.
Input Schema
{
"type": "object",
"properties": {
"course": {
"description": "The course's id, unit code, workshops course id or name, as getCourseDetails accepts.",
"type": "string"
},
"date_from": {
"description": "The first date to search, YYYY-MM-DD in Australia/Brisbane time. Defaults to today; a past date means today.",
"format": "date",
"type": "string"
},
"date_to": {
"description": "The last date to search, YYYY-MM-DD. Defaults to 60 days after date_from and is capped at 365 days after it.",
"format": "date",
"type": "string"
},
"limit": {
"default": 10,
"description": "How many sessions to return. Larger values are capped at 50; values below 1 use the default.",
"maximum": 50,
"type": "integer"
},
"location": {
"description": "The venue's id or name from listLocations, or a suburb only one venue has.",
"type": "string"
}
},
"required": [
"course",
"location"
]
}Output Schema
{
"type": "object",
"properties": {
"sessions": {
"items": {
"additionalProperties": false,
"description": "A bookable session.",
"properties": {
"booking_page": {
"description": "The site's course finder, preselected for this course and venue. The person books there and pays on the enrolment site.",
"format": "uri",
"type": "string"
},
"course": {
"description": "The course's id (slug).",
"type": "string"
},
"course_code": {
"description": "The national unit code.",
"type": "string"
},
"course_id": {
"description": "The workshops course id.",
"type": "integer"
},
"course_name": {
"type": "string"
},
"date": {
"description": "The session date, YYYY-MM-DD.",
"format": "date",
"type": "string"
},
"date_display": {
"description": "The date as the site shows it, such as Tuesday 20 October.",
"type": "string"
},
"price_aud": {
"description": "The price in Australian dollars, GST included. A special price replaces the standard one.",
"type": "number"
},
"price_display": {
"description": "The price as the site shows it.",
"type": "string"
},
"seats": {
"description": "The seats left as the site shows them, such as 5+. Never the exact vacancy count.",
"type": "string"
},
"session_id": {
"description": "The session's id.",
"type": "string"
},
"time": {
"description": "The start and finish time as the site shows it.",
"type": "string"
},
"venue": {
"additionalProperties": false,
"description": "A training venue.",
"properties": {
"address": {
"type": "string"
},
"distance_km": {
"description": "The distance from near in kilometres, to one decimal place. Present only on distance-ordered results.",
"type": "number"
},
"id": {
"description": "The venue's id. The session endpoints accept it as location.",
"type": "string"
},
"name": {
"type": "string"
},
"postcode": {
"type": "string"
},
"state": {
"description": "The state or territory, such as QLD.",
"type": "string"
},
"suburb": {
"type": "string"
}
},
"required": [
"id",
"name",
"state"
],
"type": "object"
}
},
"required": [
"session_id",
"course",
"course_id",
"course_name",
"date",
"date_display",
"time",
"price_aud",
"price_display",
"seats",
"venue",
"booking_page"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"sessions"
],
"additionalProperties": false
}🟢start_booking(session_id)
Get the link that books one place in a session found with search_sessions or search_nearby_sessions. Give the link to the person: they open it, confirm, and finish on the enrolment site, where they enter their own details and pay themselves. This tool books nothing, holds no seat and takes no personal or payment details, so don't tell the person they are booked. The link is for one person: for a group, book each person separately or use the corporate enquiry page (/corporate).
Input Schema
{
"type": "object",
"properties": {
"session_id": {
"description": "The session_id from a search_sessions or search_nearby_sessions result.",
"type": "string"
}
},
"required": [
"session_id"
]
}Output Schema
{
"type": "object",
"properties": {
"booking_url": {
"description": "The page the person opens to book one place in the session.",
"format": "uri",
"type": "string"
},
"message": {
"description": "What to tell the person.",
"type": "string"
},
"session_id": {
"type": "string"
},
"status": {
"const": "booking_link",
"type": "string"
}
},
"required": [
"status",
"session_id",
"booking_url",
"message"
],
"additionalProperties": false
}Community
Evidence