Machine-readable data
This site is built for machines too
Beyond the visual portfolio, androsguirado.dev publishes its underlying data in open, structured formats. Everything below is derived from a single canonical knowledge graph, so people, search engines and AI agents can all work from the same source of truth.
This index is generated from the knowledge graph — currently 450 entities and 2035 typed relationships — and is also available as machine-readable.json.
Quick start for AI agents
Recommended order for automated clients:
- Check freshness
GET https://androsguirado.dev/api/statusAPI liveness plus the knowledge-graph version and lastUpdated. Cache the version; only re-sync when it changes. - Get oriented
https://androsguirado.dev/llms.txtConcise profile in Markdown. Or this index (machine-readable.json) for every available format. - Query, don’t download
https://androsguirado.dev/api/kg/query · https://androsguirado.dev/mcpFor relationship questions use the REST API or MCP server instead of parsing the whole graph. - Fetch the full dataset
https://androsguirado.dev/knowledge-graph.jsonThe canonical source of truth — everything else here is derived from it. - HTML as a last resort
https://androsguirado.dev/Use the rendered pages only when a structured format above can’t answer the question.
Which one should you use?
- HumansThis page & the interactive siteBrowse the visual timeline, CV and projects.
- Search enginesschema.org JSON-LDInline ProfilePage/Person on every page; full graph in seo.json.
- AI agentsKnowledge Graph + MCP / REST APICanonical source of truth — query it live over MCP or REST.
- LLMsllms.txt / llms-full.txtConcise or fully-expanded profile in Markdown.
Canonical data
Knowledge GraphSource of truth
Canonical machine-readable representation of the complete portfolio: normalized nodes (Person, Project, Client, Skill, Organization, Event, Award) and explicit typed edges (WORKED_ON, USED_SKILL, FOR_CLIENT, BUILT_AT, SPOKE_AT, AWARDED_FOR…). Self-documented in its meta block; every other dataset here is derived from it. Currently 450 entities and 2035 typed relationships.
Knowledge Graph query engine
Declarative query layer over the graph (browser + Node). Named, explainable queries — projects_by_year, projects_by_client, skills_by_project, clients_by_skill, projects_by_skill, skills_evolution, projects_by_relevance — each with a per-step traversal trace.
For search engines
SEO manifest
The full career timeline as a schema.org @graph (WebSite, ProfilePage, Person, CreativeWork projects). A compact ProfilePage/Person snippet is also inlined into every HTML page, which is what search engines actually parse.
For LLMs
llms.txt
Concise, LLM-oriented profile following the llms.txt convention: bio, career timeline, skills, awards, talks, and a curated index of every machine-readable resource.
llms-full.txt
The entire profile expanded into one self-contained document — complete skills inventory, full client list, every award and talk, and the full year-by-year timeline.
Derived datasets
Timeline (JSON)
Year-by-year activity — career steps, studio milestones, talks, awards and projects, with skills, roles and project types resolved by name.
Timeline (Markdown)
The same year-by-year timeline in LLM-friendly Markdown.
Live API & agent interfaces
REST API
The knowledge graph served as a queryable backend: GET /api/kg/nodes, GET /api/kg/edges and GET /api/kg/query (e.g. ?type=projects_by_skill&skill=flash&from=2003&to=2010, add explain=1 for the plan). CDN-cached per deploy with an X-KG-Version header.
Status endpoint
Lightweight health & freshness probe: API liveness, the knowledge-graph version (content hash, identical to the X-KG-Version header), schemaVersion, lastUpdated and live entity/relationship counts. Also aliased at /status.
OpenAPI specification
Full machine-readable contract for the REST API and content endpoints.
MCP server
Model Context Protocol server (stateless, JSON-RPC 2.0 over streamable HTTP). Tools: getProjectsByYear, getProjectsByClient, getSkillsEvolution, queryKnowledgeGraph, searchEntities. Connect with: claude mcp add --transport http andros-kg https://androsguirado.dev/mcp. Server card at /.well-known/mcp/server-card.json.
Discovery & manifests
AI plugin manifest
Plugin manifest describing the portfolio and pointing to the OpenAPI spec.
Agent Skills
Agent Skills index exposing a portfolio-info skill with a content hash for integrity.
API catalog
Standard linkset (RFC 9727) pointing to the service description (OpenAPI), the human/agent index and the documentation (llms.txt).
Sitemap
XML sitemap of all crawlable pages.
robots.txt
Crawl directives, explicit allow-list for AI crawlers, sitemap reference and Content-Signal declarations.
Query the data (API)
The knowledge graph is also a live, queryable backend. The canonical contract is the OpenAPI 3.1 spec; responses are CDN-cached per deploy (check the X-KG-Version header).
GET
/api/kg/nodesList or filter entities (nodes).
type- Node type: Person, Skill, Project, Organization, Client, Event, Award
q- Fuzzy name/alias search (accent & case-insensitive)
limit- Max results (default 100, max 1000)
offset- Pagination offset (default 0)
curl "https://androsguirado.dev/api/kg/nodes?type=Skill&q=flash"GET
/api/kg/edgesList or filter relationships (edges).
type- Edge type: KNOWS_SKILL, WORKED_ON, BUILT_AT, USED_SKILL, VIA_AGENCY, FOR_CLIENT, PARTICIPATED_IN, AT, SPOKE_AT, RECEIVED, AWARDED_FOR
from- Source entity id
to- Target entity id
limit- Max results (default 100, max 1000)
offset- Pagination offset (default 0)
curl "https://androsguirado.dev/api/kg/edges?type=USED_SKILL&limit=5"GET
/api/kg/queryRun a named declarative query — returns results plus a per-step traversal trace.
typerequired- Query name: projects_by_year, projects_by_client, skills_by_project, clients_by_skill, projects_by_skill, skills_evolution, projects_by_relevance
explain- Return only the traversal plan, without executing
…- Per-query params — see the named queries below
curl "https://androsguirado.dev/api/kg/query?type=projects_by_relevance&min=0.9"POST
/mcpMCP server (JSON-RPC 2.0, streamable HTTP, stateless). Methods: initialize, ping, tools/list, tools/call.
curl -X POST "https://androsguirado.dev/mcp" -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'GET
/api/statusHealth & freshness probe — API liveness, graph version (= X-KG-Version), schemaVersion, lastUpdated and live entity/relationship counts. Also at /status.
curl "https://androsguirado.dev/api/status"
Named queries
Each query returns its results plus a per-step traversal trace; add &explain=1 to get the plan without executing.
projects_by_year→ project[]Projects created in a given year or year range.
year- int — single year
from- int — range start (alt. to year)
to- int — range end
curl "https://androsguirado.dev/api/kg/query?type=projects_by_year&year=2008"projects_by_client→ project[]Projects commissioned by a client (also matches studios/agencies acting as client).
client- entity id or name, e.g. "Volkswagen" or "client_volkswagen"
curl "https://androsguirado.dev/api/kg/query?type=projects_by_client&client=Volkswagen"skills_by_project→ skill[]Skills used in a project.
project- entity id or name, e.g. "Beetle dream"
curl "https://androsguirado.dev/api/kg/query?type=skills_by_project&project=Beetle dream"clients_by_skill→ client[]Clients of the projects where a skill was used (2-hop: skill ← USED_SKILL ← project → FOR_CLIENT → client).
skill- entity id or name, e.g. "PHP"
from- int — optional year range over the projects
to- int
curl "https://androsguirado.dev/api/kg/query?type=clients_by_skill&skill=PHP"projects_by_skill→ project[]Projects where a skill was used, optionally restricted to a year range.
skill- entity id or name, e.g. "flash"
from- int — optional range start
to- int
curl "https://androsguirado.dev/api/kg/query?type=projects_by_skill&skill=flash&from=2003&to=2010"skills_evolution→ {year, projects, skillsStarted[], skillsUsed: {id, name, projects}[]}[]Year-by-year skill evolution: per year, the skills used in projects (with project counts), the skills first adopted that year, and the project total. Defaults to the full active range.
from- int — range start (default: first project year)
to- int — range end (default: last project year)
curl "https://androsguirado.dev/api/kg/query?type=skills_evolution&from=2003&to=2010"projects_by_relevance→ project[]Projects at or above a relevance threshold (0–1), most relevant first. Optional year range.
min- float 0–1 — relevance threshold (default 0.7)
from- int — optional range start
to- int
curl "https://androsguirado.dev/api/kg/query?type=projects_by_relevance&min=0.9"
MCP server
Connect an MCP-capable agent (Claude, etc.):
claude mcp add --transport http andros-kg https://androsguirado.dev/mcpgetProjectsByYear— Projects worked on in a year or year rangegetProjectsByClient— Projects commissioned by a client (fuzzy name or entity id)getSkillsEvolution— Year-by-year skill usage and adoption between two yearsqueryKnowledgeGraph— Generic declarative query (projects_by_year, projects_by_client, skills_by_project, clients_by_skill, projects_by_skill, skills_evolution)searchEntities— Search entities by name/alias, optional type filter
Notes for agents
- The Knowledge Graph is canonical.
seo.json,timeline.jsonandllms-full.txtare all derived from/knowledge-graph.json— prefer it when accuracy matters. - Query, don't download. For relationship questions use the MCP server or the REST API instead of parsing the whole graph.
- Content negotiation is enabled. The homepage advertises these resources via HTTP
Linkheaders (RFC 8288) andVary: Accept. - This catalog is self-described by the data itself. The full resource list lives in
knowledge-graph.jsonundermeta.distributions— an agent that fetched only the graph can discover every access path without loading this page. - This page has two structured twins: a schema.org
DataCatalogembedded in its<head>as JSON-LD, and the whole catalog as /machine-readable.json.