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.md

The 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.

EndpointWhat it returns
/api/v1/index.jsonWhere everything is
/api/v1/courses.jsonEvery 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}.jsonOne course in full: entry requirements, modules, assessment, progression, FAQs, awards and how to enquire
/api/v1/guides.jsonThe 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

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.”
Eliza Marie Borg5.0 on Google