Back to profile
DEVELOPERS / JORDÃO QUALHO PROFILE API

Profile API.

A public, read-only JSON API over my verified profile: the same data behind this site and the MCP server. Use it from scripts, backends or LLM function calling.

  • OpenAPI 3.1
  • No API key
  • Read-only
  • RFC 9457 errors

Overview

Base URL
https://jordaoqualho.com/api
Authentication
None. No key or sign-up, and every call is read-only and safe to repeat, so there is no separate sandbox.
Format
JSON in and out. Errors are RFC 9457 problem details (application/problem+json) with a stable code and a hint.
CORS and caching
Open CORS, so browsers can call it directly. GET responses are cached at the edge for up to an hour.
Privacy
Nothing you send is stored, including job descriptions.

Quickstart

Three calls cover most questions about my experience.

# Profile summary
curl https://jordaoqualho.com/api/profile

# Roles that used AWS
curl "https://jordaoqualho.com/api/experience?technology=AWS"

# Check a job description
curl -X POST https://jordaoqualho.com/api/job-fit \
  -H 'content-type: application/json' \
  -d '{"job_description":"Senior Backend Engineer: Node.js, TypeScript, AWS"}'

Endpoints

GET /api
List every endpoint · getApiIndex
GET /api/profile
Get the profile · getProfile
GET /api/cases
List case studies · listEngineeringCases
GET /api/cases/{slug}
Get one case study · getCaseDetail
GET /api/experience
Query work history · queryExperience
POST /api/job-fit
Match a job description · evaluateJobFit

Full request and response schemas are in openapi.json.

Errors

Every error, including unknown paths under /api, returns JSON problem details, never an HTML page.

404 not_found
The path doesn't exist. GET /api lists every endpoint.
404 case_not_found
Unknown slug. GET /api/cases for valid slugs.
400 invalid_request
Malformed body or unknown query parameter. The hint names the fix.
405 method_not_allowed
Wrong HTTP method. The Allow header lists valid ones.
{
  "type": "https://jordaoqualho.com/developers/#error-case_not_found",
  "title": "Case study not found",
  "status": 404,
  "detail": "No case study has the slug 'payments'.",
  "code": "case_not_found",
  "hint": "Use one of: financial-onboarding-incident, … GET /api/cases lists them.",
  "docs": "https://jordaoqualho.com/openapi.json"
}

Function calling and MCP

Import https://jordaoqualho.com/openapi.json as a ChatGPT GPT Action, or map each operation to a tool in any function-calling framework. Every operation has a unique operationId, a description and typed parameters. For Claude, Cursor and other MCP clients, connect the MCP server instead.

Connect the MCP server

Machine-readable files

/openapi.json
OpenAPI 3.1 contract: operationIds, typed parameters and response schemas.
/.well-known/api-catalog
RFC 9727 API catalog linking the spec and these docs.
/api
JSON index of every endpoint.
/llms.txt
When to use this profile, and reading order.
/api/mcp
MCP server (https://jordaoqualho.com/api/mcp), same data as tools.