Skip to main content
Glama

Search Australian courses

search_courses
Read-onlyIdempotent

Search CRICOS-registered Australian courses for international students by keyword and structured filters (state/city, qualification group or exact AQF level, field of education, tuition range, IELTS, length, provider type, provider code, provider evidence level, regional area, sort). Returns a page of compact course summaries with tuition for the given studentLocation, provider and page url, plus webUrl (the same search on oneuedu.com) for the user. totalResults is the number of matching courses; when totalCapped is true only the first reachableResults of them can be paged through, so split the search (by state, subject, schoolCode or fee range) to list them all. evidenceLevel requires a website account on the public endpoint; other filters are public. Use get_course with explicit sections afterwards for the topics relevant to a specific course. This public endpoint returns English natural-language text, preserving sources, conditions and pagination.

Input Schema

NameRequiredDescriptionDefault
cityNoCity of the campus in English (Sydney, Melbourne, Brisbane, Perth, Adelaide, Canberra, Hobart, Darwin, Gold Coast, Geelong, ...). Requires state. See list_search_options for the full list.
pageNo1-based page number.
sortNorelevance (default), fee_asc/fee_desc (tuition per academic year), totalFee_asc/totalFee_desc (whole-course tuition), length_asc, length_desc.
stateNoAustralian state/territory of the campus: VIC, NSW, QLD, WA, SA, ACT, TAS, NT.
degreeNoQualification group(s): master (postgraduate), bachelor (undergraduate), diploma (diplomas and Certificate I-IV), k12 (schools), other (PhD, graduate certificate/diploma, non-AQF).
localeNoLanguage of names/descriptions in the result: zh-CN (default, Simplified Chinese plus English names), en-US, zh-TW. Also selects the language prefix of returned oneuedu.com URLs.zh-CN
maxFeeNoMaximum tuition in AUD per academic year: compared with tuitionForStudentLocation.perAcademicYearAud in each result (courses shorter than one year use their whole-course fee), the same basis as sort fee_asc/fee_desc. Not total course tuition.
minFeeNoMinimum tuition in AUD per academic year: compared with tuitionForStudentLocation.perAcademicYearAud in each result (courses shorter than one year use their whole-course fee), the same basis as sort fee_asc/fee_desc. Not total course tuition.
fundingNoProvider type: Government (public universities/TAFE) or Private.
keywordNoCourse name keywords in English or Chinese, or a CRICOS course code. Examples: "nursing", "early childhood", "幼教", "089591C". Keep it short (2-4 words); do not put the city, degree or school name here, use the dedicated filters instead.
subjectNoBroad field of education code(s): 01 Natural & Physical Sciences, 02 Information Technology, 03 Engineering, 04 Architecture & Building, 05 Agriculture & Environment, 06 Health, 07 Education, 08 Management & Commerce, 09 Society & Culture, 10 Creative Arts, 11 Food/Hospitality/Personal Services, 12 Mixed field.
maxIeltsNoMaximum IELTS overall band required (0-9, 0.5 steps).
maxYearsNoMaximum course length in academic years (0.5 steps).
minIeltsNoMinimum IELTS overall band required (0-9, 0.5 steps).
minYearsNoMinimum course length in academic years (0.5 steps).
pageSizeNoResults per page, max 20.
closedOnlyNoOnly courses that no longer accept international students (closed). Default false: only courses still open to them. There is no mixed mode; to check whether one specific course is closed, call get_course.
remoteAreaNo"only" = regional/remote-area campuses only (extra migration points); "exclude" = metropolitan only.
schoolCodeNoRestrict to one provider by its CRICOS provider code, e.g. "00113B" (Deakin University). Use get_school or a school page URL to find codes.
degreeLevelNoExact AQF level name(s) for a finer filter than degree, e.g. "Masters Degree (Coursework)", "Bachelor Degree", "Certificate III"; overrides degree when both are given. Group names (master/bachelor/diploma/k12/other) belong in degree, not here: they are moved to degree automatically, case/spacing variants of a level name are corrected, and unknown values are ignored. list_search_options lists the levels under each group.
packagedOnlyNoOnly packaged (pathway) courses.
educationTypeNohigherEducation (universities) or vocationalEducation (VET/TAFE/RTO).
evidenceLevelNoOnly courses at providers whose student-visa evidence level is one of these (1 = lowest documentary risk, 3 = highest), as compiled by One U Education from the official Document Checklist Tool. On the public endpoint this requires a connected One U Education account. Each returned provider is checked against its current evidence-level record: results attach providerEvidenceLevel with its capture date, and evidenceLevelCheck lists providers excluded because their current record is outside the requested levels. A provider level is not a visa approval probability.
accurateFeeOnlyNoOnly courses whose tuition is verified/accurate.
studentLocationNoWhere the student currently is. "offshore" = applying from outside Australia (default); "onshore" = already in Australia. This changes both the result set and which tuition figure is authoritative, so ask the user if unknown.offshore

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / evidenceLevel
      Added value: +{
      +  "description": "Only courses at providers whose student-visa evidence level is one of these (1 = lowest documentary risk, 3 = highest), as compiled by One U Education from the official Document Checklist Tool. On the public endpoint this requires a connected One U Education account. Each returned provider is checked against its current evidence-level record: results attach providerEvidenceLevel with its capture date, and evidenceLevelCheck lists providers excluded because their current record is outside the requested levels. A provider level is not a visa approval probability.",
      +  "items": {
      +    "enum": [
      +      1,
      +      2,
      +      3
      +    ],
      +    "type": "integer"
      +  },
      +  "maxItems": 3,
      +  "minItems": 1,
      +  "type": "array"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / properties / maxFee / description
      Previous value: -"Maximum tuition in AUD (per academic year as displayed on the site)."New value: +"Maximum tuition in AUD per academic year: compared with tuitionForStudentLocation.perAcademicYearAud in each result (courses shorter than one year use their whole-course fee), the same basis as sort fee_asc/fee_desc. Not total course tuition."
    • changedInput schema / properties / minFee / description
      Previous value: -"Minimum tuition in AUD (per academic year as displayed on the site)."New value: +"Minimum tuition in AUD per academic year: compared with tuitionForStudentLocation.perAcademicYearAud in each result (courses shorter than one year use their whole-course fee), the same basis as sort fee_asc/fee_desc. Not total course tuition."
    • changedInput schema / properties / sort / description
      Previous value: -"relevance (default), fee_asc, fee_desc, totalFee_asc, totalFee_desc, length_asc, length_desc."New value: +"relevance (default), fee_asc/fee_desc (tuition per academic year), totalFee_asc/totalFee_desc (whole-course tuition), length_asc, length_desc."
  3. Changed2 schema fields changed
    • addedInput schema / properties / closedOnly
      Added value: +{
      +  "description": "Only courses that no longer accept international students (closed). Default false: only courses still open to them. There is no mixed mode; to check whether one specific course is closed, call get_course.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / includeClosed
      Removed value: -{
      -  "description": "Include courses that no longer accept international students. Default false.",
      -  "type": "boolean"
      -}
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, and the description adds genuinely new behavior: totalResults vs totalCapped vs reachableResults limits and the workaround, that results are English natural-language text preserving sources and conditions, that tuition is keyed to studentLocation, and the account requirement for evidenceLevel. This is behavioral context the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verb and filter list, then pagination caveat, then alternatives. It is dense and one long paragraph with several semicolon-chained clauses, so a little more structure would help, but every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 25-parameter, no-required-argument search tool with no output schema, the description explains the return shape (compact summaries, tuition, provider, page url, webUrl, totalResults), the pagination ceiling, the auth boundary, and the handoff to get_course. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond it: minFee/maxFee are per-academic-year and compared against the same basis as fee_asc/fee_desc, studentLocation changes which tuition figure is authoritative, and evidenceLevel result handling (providerEvidenceLevel, evidenceLevelCheck) is described. Minor gaps remain (e.g., no guidance on combining degreeLevel and degree, which lives only in the schema).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (search CRICOS-registered Australian courses) plus the full filter vocabulary and what a result page contains. It clearly separates this from sibling get_course ('use get_course with explicit sections afterwards') and from option-discovery via list_search_options, so an agent can distinguish it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete routing: use this for keyword/filter discovery, then call get_course for the topics of a specific course, and split the search (by state, subject, schoolCode or fee range) when totalCapped is true. It also names a prerequisite condition for evidenceLevel (requires an account on the public endpoint) and states which filters are public.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources