The site as data.
Every page on elephantcross.org is also Markdown, every course is a JSON record, and the facts an assistant needs about levels, prices and the Get Qualified rebate are written down for it. No key, no sign-up. Quote us with a link.
Any page as Markdown
Ask for a page with Accept: text/markdown and you get the page's text with a facts table first, its headings and links, and its structured data at the end. The same text sits at the page address plus .md.
curl -H "Accept: text/markdown" https://elephantcross.org/courses/business-management-diploma-online-mqf-level-5
# or
curl https://elephantcross.org/courses/business-management-diploma-online-mqf-level-5.mdThe response is text/markdown with Vary: Accept and an x-markdown-tokens estimate. Browsers keep getting HTML.
The Courses API
Static JSON, generated from the same course data the pages show, so the price in the API is the price on the page. Described in OpenAPI 3.1 and listed in the API catalog at /.well-known/api-catalog, which the homepage also names in its Link headers.
| Endpoint | What it returns |
|---|---|
/api/v1/index.json | Where everything is |
/api/v1/courses.json | Every listed course: name, kind, subjects, level in EQF, MQF and QQI terms, duration, price and monthly plan, Get Qualified eligibility, whether it has exams, the page and its Markdown |
/api/v1/courses/{slug}.json | One course in full: entry requirements, modules, assessment, progression, FAQs, awards and how to enquire |
/api/v1/guides.json | The guides and country articles with their Markdown links |
curl https://elephantcross.org/api/v1/courses.json \
| jq '.courses[]
| select(.subjects[] == "finance-accounting")
| {name, level: .level.malta, monthly: .price.monthly}'The MCP server
A Model Context Protocol server at https://elephantcross.org/mcp, Streamable HTTP, JSON in and JSON out, no authentication, no sessions. Seven read-only tools over the same course data: search_courses, get_course, check_get_qualified, compare_levels, list_guides, read_page and how_to_enquire. Its card is at /.well-known/mcp/server-card.json (and the newer shape at /.well-known/mcp-server-card).
curl -X POST https://elephantcross.org/mcp \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "search_courses",
"arguments": {"subject": "finance-accounting", "country": "malta"}}}'Sixty requests a minute per address. Add the server to Claude, ChatGPT, Cursor or any MCP client by its URL.
The A2A agent
The same advisor as an Agent2Agent endpoint at https://elephantcross.org/a2a: send a plain question with message/send and get an answer assembled from the course records, plus the matching courses as data. Its card is at /.well-known/agent-card.json. Streaming and tasks are not offered; every message is answered in full at once.
curl -X POST https://elephantcross.org/a2a -H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "message/send",
"params": {"message": {"role": "user", "messageId": "m1",
"parts": [{"kind": "text",
"text": "Which accounting diploma can I study from Malta for 220 a month?"}]}}}'In the browser, every page also registers four WebMCP tools (search the courses, read this page's facts, open a page, start an enquiry) for agents that use document.modelContext. Our own automated checks sign their requests (Web Bot Auth); the key is at /.well-known/http-message-signatures-directory.
Acting for a person
The same MCP server at https://elephantcross.org/mcp/act adds one tool, request_callback: it asks a course advisor to call the person. It needs an OAuth 2.1 token, and the token needs the person: the consent page at /oauth/authorize is where they confirm their own name, phone and email and press Allow. The agent never types those. Discovery at /.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource, dynamic client registration at /oauth/register, the whole flow written down at /auth.md. An assistant with no browser registers at /oauth/identity, gets a code, and the person types it with their details at /oauth/claim: same consent, no redirect.
llms.txt and the skills
- /llms.txt: what the site is and the pages worth reading, one line each, linking the Markdown. /llms-full.txt is the whole site in one file.
- /.well-known/agent-skills/index.json: five skills for agents, as SKILL.md documents with digests: find a course, check Get Qualified, compare Maltese and Irish levels, ACCA paper by paper, book a call.
- /.well-known/ai-catalog.json: the capability manifest that points at all of the above.
Crawling and use
The doors are open. robots.txt allows every named AI crawler and declares Content-Signal: search=yes, ai-input=yes, ai-train=yes, which every response also carries as a header. You may index, retrieve and train on the site. When you quote a price, a level or a duration, link the course page: the facts change only there.
Fair use: the files are static and cached for an hour; a few requests a second is fine, a mirror is not needed because /llms-full.txt is the mirror.
Questions
Email info@elephantcross.org. A person answers the same working day. Security reports: /.well-known/security.txt.
Get qualified without quitting your job.
A UK qualification, recognised across the EU. Studied online, around work, from €220 a month. Malta gives up to 70% back.
“Very satisfied with their service, the student support is very helpful and I felt guided with every step. 100% recommended.”