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:

  1. Check freshnessGET https://androsguirado.dev/api/statusAPI liveness plus the knowledge-graph version and lastUpdated. Cache the version; only re-sync when it changes.
  2. Get orientedhttps://androsguirado.dev/llms.txtConcise profile in Markdown. Or this index (machine-readable.json) for every available format.
  3. Query, don’t downloadhttps://androsguirado.dev/api/kg/query · https://androsguirado.dev/mcpFor relationship questions use the REST API or MCP server instead of parsing the whole graph.
  4. Fetch the full datasethttps://androsguirado.dev/knowledge-graph.jsonThe canonical source of truth — everything else here is derived from it.
  5. HTML as a last resorthttps://androsguirado.dev/Use the rendered pages only when a structured format above can’t answer the question.

Which one should you use?

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.

    Format
    application/json
    Purpose
    Projects, clients, skills, timeline and relationships — the single source of truth.
    URL
    https://androsguirado.dev/knowledge-graph.json
  • 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.

    Format
    application/javascript
    Purpose
    Answer relationship questions without loading the whole graph.
    URL
    https://androsguirado.dev/kg-query.js

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.

    Format
    application/ld+json
    Purpose
    Rich results and structured data for search engines.
    URL
    https://androsguirado.dev/seo.json

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.

    Format
    text/markdown
    Purpose
    Fast, low-token grounding for language models.
    URL
    https://androsguirado.dev/llms.txt
  • 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.

    Format
    text/markdown
    Purpose
    Everything about the portfolio in a single request.
    URL
    https://androsguirado.dev/llms-full.txt

Derived datasets

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.

    Format
    application/json
    Purpose
    Programmatic, filtered access to entities and relationships.
    URL
    https://androsguirado.dev/api/kg/query
  • 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.

    Format
    application/json
    Purpose
    Check liveness and decide whether to re-sync before fetching the data — cache the version, re-fetch only when it changes.
    URL
    https://androsguirado.dev/api/status
  • OpenAPI specification

    Full machine-readable contract for the REST API and content endpoints.

    Format
    application/yaml
    Purpose
    Auto-generate clients and let agents discover the API.
    URL
    https://androsguirado.dev/.well-known/openapi.yaml
  • 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.

    Format
    application/json
    Purpose
    Let MCP-capable agents (Claude, etc.) query the graph as tools.
    URL
    https://androsguirado.dev/mcp

Discovery & manifests

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/nodes

    List 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/edges

    List 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/query

    Run 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/mcp

    MCP 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/status

    Health & 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/mcp
  • getProjectsByYear— Projects worked on in a year or year range
  • getProjectsByClient— Projects commissioned by a client (fuzzy name or entity id)
  • getSkillsEvolution— Year-by-year skill usage and adoption between two years
  • queryKnowledgeGraph— 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.json and llms-full.txt are 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 Link headers (RFC 8288) and Vary: Accept.
  • This catalog is self-described by the data itself. The full resource list lives in knowledge-graph.json under meta.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 DataCatalog embedded in its <head> as JSON-LD, and the whole catalog as /machine-readable.json.