{
	"meta": {
		"name": "Andros Guiradó — machine-readable resource catalog",
		"description": "Canonical catalog of every machine-readable representation and access interface of the portfolio. Generated from knowledge-graph.json (meta.distributions) — the single source of truth.",
		"generatedFrom": "https://androsguirado.dev/knowledge-graph.json",
		"canonical": "https://androsguirado.dev/knowledge-graph.json",
		"page": "https://androsguirado.dev/machine-readable",
		"self": "https://androsguirado.dev/machine-readable.json",
		"schemaVersion": 2
	},
	"stats": {
		"entities": 450,
		"relationships": 2035,
		"nodeTypes": {
			"Person": 1,
			"Skill": 72,
			"Project": 173,
			"Organization": 45,
			"Client": 79,
			"Event": 62,
			"Award": 18
		},
		"queries": [
			"projects_by_year",
			"projects_by_client",
			"skills_by_project",
			"clients_by_skill",
			"projects_by_skill",
			"skills_evolution",
			"projects_by_relevance"
		],
		"schemaVersion": 2,
		"lastUpdated": "2026-06-29T18:57:30.913Z"
	},
	"quickStart": [
		{
			"step": "Check freshness",
			"action": "GET https://androsguirado.dev/api/status",
			"note": "API liveness plus the knowledge-graph version and lastUpdated. Cache the version; only re-sync when it changes."
		},
		{
			"step": "Get oriented",
			"action": "https://androsguirado.dev/llms.txt",
			"note": "Concise profile in Markdown. Or this index (machine-readable.json) for every available format."
		},
		{
			"step": "Query, don’t download",
			"action": "https://androsguirado.dev/api/kg/query · https://androsguirado.dev/mcp",
			"note": "For relationship questions use the REST API or MCP server instead of parsing the whole graph."
		},
		{
			"step": "Fetch the full dataset",
			"action": "https://androsguirado.dev/knowledge-graph.json",
			"note": "The canonical source of truth — everything else here is derived from it."
		},
		{
			"step": "HTML as a last resort",
			"action": "https://androsguirado.dev/",
			"note": "Use the rendered pages only when a structured format above can’t answer the question."
		}
	],
	"audiences": [
		{
			"who": "Humans",
			"use": "This page & the interactive site",
			"url": "https://androsguirado.dev/",
			"note": "Browse the visual timeline, CV and projects."
		},
		{
			"who": "Search engines",
			"use": "schema.org JSON-LD",
			"url": "https://androsguirado.dev/seo.json",
			"note": "Inline ProfilePage/Person on every page; full graph in seo.json."
		},
		{
			"who": "AI agents",
			"use": "Knowledge Graph + MCP / REST API",
			"url": "https://androsguirado.dev/knowledge-graph.json",
			"note": "Canonical source of truth — query it live over MCP or REST."
		},
		{
			"who": "LLMs",
			"use": "llms.txt / llms-full.txt",
			"url": "https://androsguirado.dev/llms.txt",
			"note": "Concise or fully-expanded profile in Markdown."
		}
	],
	"groups": [
		"Canonical data",
		"For search engines",
		"For LLMs",
		"Derived datasets",
		"Live API & agent interfaces",
		"Discovery & manifests"
	],
	"resources": [
		{
			"name": "Knowledge Graph",
			"url": "https://androsguirado.dev/knowledge-graph.json",
			"mediaType": "application/json",
			"kind": "dataset",
			"role": "canonical",
			"group": "Canonical data",
			"canonical": true,
			"description": "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.",
			"purpose": "Projects, clients, skills, timeline and relationships — the single source of truth."
		},
		{
			"name": "Knowledge Graph query engine",
			"url": "https://androsguirado.dev/kg-query.js",
			"mediaType": "application/javascript",
			"kind": "dataset",
			"role": "interface",
			"group": "Canonical data",
			"description": "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.",
			"purpose": "Answer relationship questions without loading the whole graph."
		},
		{
			"name": "SEO manifest",
			"url": "https://androsguirado.dev/seo.json",
			"mediaType": "application/ld+json",
			"kind": "dataset",
			"role": "derived",
			"group": "For search engines",
			"derivedFrom": "https://androsguirado.dev/knowledge-graph.json",
			"description": "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.",
			"purpose": "Rich results and structured data for search engines."
		},
		{
			"name": "llms.txt",
			"url": "https://androsguirado.dev/llms.txt",
			"mediaType": "text/markdown",
			"kind": "dataset",
			"role": "derived",
			"group": "For LLMs",
			"description": "Concise, LLM-oriented profile following the llms.txt convention: bio, career timeline, skills, awards, talks, and a curated index of every machine-readable resource.",
			"purpose": "Fast, low-token grounding for language models."
		},
		{
			"name": "llms-full.txt",
			"url": "https://androsguirado.dev/llms-full.txt",
			"mediaType": "text/markdown",
			"kind": "dataset",
			"role": "derived",
			"group": "For LLMs",
			"derivedFrom": "https://androsguirado.dev/knowledge-graph.json",
			"description": "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.",
			"purpose": "Everything about the portfolio in a single request."
		},
		{
			"name": "Timeline (JSON)",
			"url": "https://androsguirado.dev/timeline.json",
			"mediaType": "application/json",
			"kind": "dataset",
			"role": "derived",
			"group": "Derived datasets",
			"derivedFrom": "https://androsguirado.dev/knowledge-graph.json",
			"description": "Year-by-year activity — career steps, studio milestones, talks, awards and projects, with skills, roles and project types resolved by name.",
			"purpose": "Chronological data ready to render or analyse."
		},
		{
			"name": "Timeline (Markdown)",
			"url": "https://androsguirado.dev/timeline.md",
			"mediaType": "text/markdown",
			"kind": "dataset",
			"role": "derived",
			"group": "Derived datasets",
			"derivedFrom": "https://androsguirado.dev/knowledge-graph.json",
			"description": "The same year-by-year timeline in LLM-friendly Markdown.",
			"purpose": "Human- and LLM-readable chronology."
		},
		{
			"name": "REST API",
			"url": "https://androsguirado.dev/api/kg/query",
			"mediaType": "application/json",
			"kind": "api",
			"role": "interface",
			"group": "Live API & agent interfaces",
			"description": "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.",
			"purpose": "Programmatic, filtered access to entities and relationships."
		},
		{
			"name": "Status endpoint",
			"url": "https://androsguirado.dev/api/status",
			"mediaType": "application/json",
			"kind": "api",
			"role": "interface",
			"group": "Live API & agent interfaces",
			"description": "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.",
			"purpose": "Check liveness and decide whether to re-sync before fetching the data — cache the version, re-fetch only when it changes."
		},
		{
			"name": "OpenAPI specification",
			"url": "https://androsguirado.dev/.well-known/openapi.yaml",
			"mediaType": "application/yaml",
			"kind": "dataset",
			"role": "discovery",
			"group": "Live API & agent interfaces",
			"description": "Full machine-readable contract for the REST API and content endpoints.",
			"purpose": "Auto-generate clients and let agents discover the API."
		},
		{
			"name": "MCP server",
			"url": "https://androsguirado.dev/mcp",
			"mediaType": "application/json",
			"kind": "api",
			"role": "interface",
			"group": "Live API & agent interfaces",
			"description": "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.",
			"purpose": "Let MCP-capable agents (Claude, etc.) query the graph as tools."
		},
		{
			"name": "AI plugin manifest",
			"url": "https://androsguirado.dev/.well-known/ai-plugin.json",
			"mediaType": "application/json",
			"kind": "dataset",
			"role": "discovery",
			"group": "Discovery & manifests",
			"description": "Plugin manifest describing the portfolio and pointing to the OpenAPI spec.",
			"purpose": "Plugin-style discovery for AI assistants."
		},
		{
			"name": "Agent Skills",
			"url": "https://androsguirado.dev/.well-known/agent-skills/index.json",
			"mediaType": "application/json",
			"kind": "dataset",
			"role": "discovery",
			"group": "Discovery & manifests",
			"description": "Agent Skills index exposing a portfolio-info skill with a content hash for integrity.",
			"purpose": "Skill-based discovery for agent frameworks."
		},
		{
			"name": "API catalog",
			"url": "https://androsguirado.dev/.well-known/api-catalog",
			"mediaType": "application/linkset+json",
			"kind": "dataset",
			"role": "discovery",
			"group": "Discovery & manifests",
			"description": "Standard linkset (RFC 9727) pointing to the service description (OpenAPI), the human/agent index and the documentation (llms.txt).",
			"purpose": "Standards-based API discovery (RFC 8615 / RFC 9727)."
		},
		{
			"name": "Sitemap",
			"url": "https://androsguirado.dev/sitemap.xml",
			"mediaType": "application/xml",
			"kind": "dataset",
			"role": "discovery",
			"group": "Discovery & manifests",
			"description": "XML sitemap of all crawlable pages.",
			"purpose": "Crawl coverage for search engines."
		},
		{
			"name": "robots.txt",
			"url": "https://androsguirado.dev/robots.txt",
			"mediaType": "text/plain",
			"kind": "dataset",
			"role": "discovery",
			"group": "Discovery & manifests",
			"description": "Crawl directives, explicit allow-list for AI crawlers, sitemap reference and Content-Signal declarations.",
			"purpose": "Tell crawlers and AI bots what they may use."
		}
	],
	"api": {
		"baseUrl": "https://androsguirado.dev",
		"openapi": "https://androsguirado.dev/.well-known/openapi.yaml",
		"description": "The knowledge graph is also a live, queryable backend. All endpoints are CDN-cached per deploy (check the X-KG-Version header). The OpenAPI 3.1 contract is the canonical machine-readable spec.",
		"endpoints": [
			{
				"method": "GET",
				"path": "/api/kg/nodes",
				"summary": "List or filter entities (nodes).",
				"params": [
					{
						"name": "type",
						"desc": "Node type: Person, Skill, Project, Organization, Client, Event, Award"
					},
					{
						"name": "q",
						"desc": "Fuzzy name/alias search (accent & case-insensitive)"
					},
					{
						"name": "limit",
						"desc": "Max results (default 100, max 1000)"
					},
					{
						"name": "offset",
						"desc": "Pagination offset (default 0)"
					}
				],
				"curl": "curl \"https://androsguirado.dev/api/kg/nodes?type=Skill&q=flash\""
			},
			{
				"method": "GET",
				"path": "/api/kg/edges",
				"summary": "List or filter relationships (edges).",
				"params": [
					{
						"name": "type",
						"desc": "Edge type: KNOWS_SKILL, WORKED_ON, BUILT_AT, USED_SKILL, VIA_AGENCY, FOR_CLIENT, PARTICIPATED_IN, AT, SPOKE_AT, RECEIVED, AWARDED_FOR"
					},
					{
						"name": "from",
						"desc": "Source entity id"
					},
					{
						"name": "to",
						"desc": "Target entity id"
					},
					{
						"name": "limit",
						"desc": "Max results (default 100, max 1000)"
					},
					{
						"name": "offset",
						"desc": "Pagination offset (default 0)"
					}
				],
				"curl": "curl \"https://androsguirado.dev/api/kg/edges?type=USED_SKILL&limit=5\""
			},
			{
				"method": "GET",
				"path": "/api/kg/query",
				"summary": "Run a named declarative query — returns results plus a per-step traversal trace.",
				"params": [
					{
						"name": "type",
						"required": true,
						"desc": "Query name: projects_by_year, projects_by_client, skills_by_project, clients_by_skill, projects_by_skill, skills_evolution, projects_by_relevance"
					},
					{
						"name": "explain",
						"desc": "Return only the traversal plan, without executing"
					},
					{
						"name": "…",
						"desc": "Per-query params — see the named queries below"
					}
				],
				"curl": "curl \"https://androsguirado.dev/api/kg/query?type=projects_by_relevance&min=0.9\""
			},
			{
				"method": "POST",
				"path": "/mcp",
				"summary": "MCP server (JSON-RPC 2.0, streamable HTTP, stateless). Methods: initialize, ping, tools/list, tools/call.",
				"params": [],
				"curl": "curl -X POST \"https://androsguirado.dev/mcp\" -H \"Content-Type: application/json\" -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}'"
			},
			{
				"method": "GET",
				"path": "/api/status",
				"summary": "Health & freshness probe — API liveness, graph version (= X-KG-Version), schemaVersion, lastUpdated and live entity/relationship counts. Also at /status.",
				"params": [],
				"curl": "curl \"https://androsguirado.dev/api/status\""
			}
		],
		"queries": [
			{
				"name": "projects_by_year",
				"description": "Projects created in a given year or year range.",
				"params": [
					{
						"name": "year",
						"desc": "int — single year"
					},
					{
						"name": "from",
						"desc": "int — range start (alt. to year)"
					},
					{
						"name": "to",
						"desc": "int — range end"
					}
				],
				"returns": "project[]",
				"curl": "curl \"https://androsguirado.dev/api/kg/query?type=projects_by_year&year=2008\""
			},
			{
				"name": "projects_by_client",
				"description": "Projects commissioned by a client (also matches studios/agencies acting as client).",
				"params": [
					{
						"name": "client",
						"desc": "entity id or name, e.g. \"Volkswagen\" or \"client_volkswagen\""
					}
				],
				"returns": "project[]",
				"curl": "curl \"https://androsguirado.dev/api/kg/query?type=projects_by_client&client=Volkswagen\""
			},
			{
				"name": "skills_by_project",
				"description": "Skills used in a project.",
				"params": [
					{
						"name": "project",
						"desc": "entity id or name, e.g. \"Beetle dream\""
					}
				],
				"returns": "skill[]",
				"curl": "curl \"https://androsguirado.dev/api/kg/query?type=skills_by_project&project=Beetle dream\""
			},
			{
				"name": "clients_by_skill",
				"description": "Clients of the projects where a skill was used (2-hop: skill ← USED_SKILL ← project → FOR_CLIENT → client).",
				"params": [
					{
						"name": "skill",
						"desc": "entity id or name, e.g. \"PHP\""
					},
					{
						"name": "from",
						"desc": "int — optional year range over the projects"
					},
					{
						"name": "to",
						"desc": "int"
					}
				],
				"returns": "client[]",
				"curl": "curl \"https://androsguirado.dev/api/kg/query?type=clients_by_skill&skill=PHP\""
			},
			{
				"name": "projects_by_skill",
				"description": "Projects where a skill was used, optionally restricted to a year range.",
				"params": [
					{
						"name": "skill",
						"desc": "entity id or name, e.g. \"flash\""
					},
					{
						"name": "from",
						"desc": "int — optional range start"
					},
					{
						"name": "to",
						"desc": "int"
					}
				],
				"returns": "project[]",
				"curl": "curl \"https://androsguirado.dev/api/kg/query?type=projects_by_skill&skill=flash&from=2003&to=2010\""
			},
			{
				"name": "skills_evolution",
				"description": "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.",
				"params": [
					{
						"name": "from",
						"desc": "int — range start (default: first project year)"
					},
					{
						"name": "to",
						"desc": "int — range end (default: last project year)"
					}
				],
				"returns": "{year, projects, skillsStarted[], skillsUsed: {id, name, projects}[]}[]",
				"curl": "curl \"https://androsguirado.dev/api/kg/query?type=skills_evolution&from=2003&to=2010\""
			},
			{
				"name": "projects_by_relevance",
				"description": "Projects at or above a relevance threshold (0–1), most relevant first. Optional year range.",
				"params": [
					{
						"name": "min",
						"desc": "float 0–1 — relevance threshold (default 0.7)"
					},
					{
						"name": "from",
						"desc": "int — optional range start"
					},
					{
						"name": "to",
						"desc": "int"
					}
				],
				"returns": "project[]",
				"curl": "curl \"https://androsguirado.dev/api/kg/query?type=projects_by_relevance&min=0.9\""
			}
		],
		"mcp": {
			"url": "https://androsguirado.dev/mcp",
			"connect": "claude mcp add --transport http andros-kg https://androsguirado.dev/mcp",
			"serverCard": "https://androsguirado.dev/.well-known/mcp/server-card.json",
			"tools": [
				{
					"name": "getProjectsByYear",
					"description": "Projects worked on in a year or year range"
				},
				{
					"name": "getProjectsByClient",
					"description": "Projects commissioned by a client (fuzzy name or entity id)"
				},
				{
					"name": "getSkillsEvolution",
					"description": "Year-by-year skill usage and adoption between two years"
				},
				{
					"name": "queryKnowledgeGraph",
					"description": "Generic declarative query (projects_by_year, projects_by_client, skills_by_project, clients_by_skill, projects_by_skill, skills_evolution)"
				},
				{
					"name": "searchEntities",
					"description": "Search entities by name/alias, optional type filter"
				}
			]
		}
	},
	"jsonld": {
		"@context": "https://schema.org",
		"@graph": [
			{
				"@type": "CollectionPage",
				"@id": "https://androsguirado.dev/machine-readable#page",
				"url": "https://androsguirado.dev/machine-readable",
				"name": "Machine-readable data — Andros Guiradó",
				"description": "Index of the open, structured formats this site publishes for search engines and AI agents: knowledge graph, schema.org JSON-LD, llms.txt, REST API, MCP server and discovery manifests. Generated from the knowledge graph.",
				"isPartOf": {
					"@id": "https://androsguirado.dev/#website"
				},
				"about": {
					"@id": "https://androsguirado.dev/#person"
				},
				"mainEntity": {
					"@id": "https://androsguirado.dev/machine-readable#catalog"
				}
			},
			{
				"@type": "DataCatalog",
				"@id": "https://androsguirado.dev/machine-readable#catalog",
				"name": "Andros Guiradó — portfolio data catalog",
				"description": "All machine-readable representations of the portfolio (450 entities, 2035 relationships). The Knowledge Graph (knowledge-graph.json) is the canonical source; every other dataset is derived from it.",
				"creator": {
					"@id": "https://androsguirado.dev/#person"
				},
				"url": "https://androsguirado.dev/machine-readable",
				"dataset": [
					{
						"@type": "Dataset",
						"name": "Knowledge Graph",
						"description": "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.",
						"url": "https://androsguirado.dev/knowledge-graph.json",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/json",
							"contentUrl": "https://androsguirado.dev/knowledge-graph.json"
						}
					},
					{
						"@type": "Dataset",
						"name": "Knowledge Graph query engine",
						"description": "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.",
						"url": "https://androsguirado.dev/kg-query.js",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/javascript",
							"contentUrl": "https://androsguirado.dev/kg-query.js"
						}
					},
					{
						"@type": "Dataset",
						"name": "SEO manifest",
						"description": "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.",
						"url": "https://androsguirado.dev/seo.json",
						"isBasedOn": "https://androsguirado.dev/knowledge-graph.json",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/ld+json",
							"contentUrl": "https://androsguirado.dev/seo.json"
						}
					},
					{
						"@type": "Dataset",
						"name": "llms.txt",
						"description": "Concise, LLM-oriented profile following the llms.txt convention: bio, career timeline, skills, awards, talks, and a curated index of every machine-readable resource.",
						"url": "https://androsguirado.dev/llms.txt",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "text/markdown",
							"contentUrl": "https://androsguirado.dev/llms.txt"
						}
					},
					{
						"@type": "Dataset",
						"name": "llms-full.txt",
						"description": "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.",
						"url": "https://androsguirado.dev/llms-full.txt",
						"isBasedOn": "https://androsguirado.dev/knowledge-graph.json",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "text/markdown",
							"contentUrl": "https://androsguirado.dev/llms-full.txt"
						}
					},
					{
						"@type": "Dataset",
						"name": "Timeline (JSON)",
						"description": "Year-by-year activity — career steps, studio milestones, talks, awards and projects, with skills, roles and project types resolved by name.",
						"url": "https://androsguirado.dev/timeline.json",
						"isBasedOn": "https://androsguirado.dev/knowledge-graph.json",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/json",
							"contentUrl": "https://androsguirado.dev/timeline.json"
						}
					},
					{
						"@type": "Dataset",
						"name": "Timeline (Markdown)",
						"description": "The same year-by-year timeline in LLM-friendly Markdown.",
						"url": "https://androsguirado.dev/timeline.md",
						"isBasedOn": "https://androsguirado.dev/knowledge-graph.json",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "text/markdown",
							"contentUrl": "https://androsguirado.dev/timeline.md"
						}
					},
					{
						"@type": "WebAPI",
						"name": "REST API",
						"description": "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.",
						"url": "https://androsguirado.dev/api/kg/query"
					},
					{
						"@type": "WebAPI",
						"name": "Status endpoint",
						"description": "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.",
						"url": "https://androsguirado.dev/api/status"
					},
					{
						"@type": "Dataset",
						"name": "OpenAPI specification",
						"description": "Full machine-readable contract for the REST API and content endpoints.",
						"url": "https://androsguirado.dev/.well-known/openapi.yaml",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/yaml",
							"contentUrl": "https://androsguirado.dev/.well-known/openapi.yaml"
						}
					},
					{
						"@type": "WebAPI",
						"name": "MCP server",
						"description": "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.",
						"url": "https://androsguirado.dev/mcp"
					},
					{
						"@type": "Dataset",
						"name": "AI plugin manifest",
						"description": "Plugin manifest describing the portfolio and pointing to the OpenAPI spec.",
						"url": "https://androsguirado.dev/.well-known/ai-plugin.json",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/json",
							"contentUrl": "https://androsguirado.dev/.well-known/ai-plugin.json"
						}
					},
					{
						"@type": "Dataset",
						"name": "Agent Skills",
						"description": "Agent Skills index exposing a portfolio-info skill with a content hash for integrity.",
						"url": "https://androsguirado.dev/.well-known/agent-skills/index.json",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/json",
							"contentUrl": "https://androsguirado.dev/.well-known/agent-skills/index.json"
						}
					},
					{
						"@type": "Dataset",
						"name": "API catalog",
						"description": "Standard linkset (RFC 9727) pointing to the service description (OpenAPI), the human/agent index and the documentation (llms.txt).",
						"url": "https://androsguirado.dev/.well-known/api-catalog",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/linkset+json",
							"contentUrl": "https://androsguirado.dev/.well-known/api-catalog"
						}
					},
					{
						"@type": "Dataset",
						"name": "Sitemap",
						"description": "XML sitemap of all crawlable pages.",
						"url": "https://androsguirado.dev/sitemap.xml",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "application/xml",
							"contentUrl": "https://androsguirado.dev/sitemap.xml"
						}
					},
					{
						"@type": "Dataset",
						"name": "robots.txt",
						"description": "Crawl directives, explicit allow-list for AI crawlers, sitemap reference and Content-Signal declarations.",
						"url": "https://androsguirado.dev/robots.txt",
						"distribution": {
							"@type": "DataDownload",
							"encodingFormat": "text/plain",
							"contentUrl": "https://androsguirado.dev/robots.txt"
						}
					}
				]
			}
		]
	}
}
