{
    "schema_version": "1.0",
    "name": "Matt Artz Knowledge Graph",
    "description": "Structured access to the Matt Artz knowledge graph — people, organizations, concepts, publications, and creative works.",
    "url": "https://www.mattartz.me/",
    "generator": {
        "name": "Knowledge Graph Hub",
        "version": "4.33.0"
    },
    "contact": {
        "url": "https://www.mattartz.me/contact/"
    },
    "capabilities": [
        {
            "name": "search_knowledge_graph",
            "description": "Search the knowledge graph by name or description. Returns matching entities, publications, podcasts, and other content.",
            "endpoint": "https://www.mattartz.me/wp-json/kgh/v1/data",
            "method": "GET",
            "parameters": [
                {
                    "name": "search",
                    "type": "string",
                    "description": "Free-text search query — matches against name and description.",
                    "required": false
                },
                {
                    "name": "post_type",
                    "type": "string",
                    "description": "Comma-separated content types, or `any` for all. Allowed: entity, post, article, book, chapter, podcast, music, software, artwork, event, op-ed, page, press_media. Default returns entity-only (254 items at generation time); pass `any` for every graph content type (619 items at generation time).",
                    "required": false,
                    "default": "entity"
                },
                {
                    "name": "schema_type",
                    "type": "string",
                    "description": "Filter by Schema.org type (Person, Organization, DefinedTerm, Book, Article, Event, etc.).",
                    "required": false
                },
                {
                    "name": "content_type",
                    "type": "string",
                    "description": "Filter by WordPress content type slug (one of entity, post, article, book, chapter, podcast, music, software, artwork, event, op-ed, page, press_media).",
                    "required": false
                },
                {
                    "name": "per_page",
                    "type": "integer",
                    "description": "Results per page (1-500).",
                    "required": false,
                    "default": 100
                },
                {
                    "name": "page",
                    "type": "integer",
                    "description": "Page number for pagination.",
                    "required": false,
                    "default": 1
                }
            ],
            "response_format": "application/json",
            "example_response": {
                "total": 619,
                "total_pages": 7,
                "page": 1,
                "per_page": 100,
                "items": [
                    {
                        "name": "Example Entity",
                        "url": "https://www.mattartz.me/entities/example-entity/",
                        "content_type": "Entity",
                        "schema_type": "Person",
                        "description": "Short description of the entity."
                    }
                ]
            }
        },
        {
            "name": "filter_by_content_type",
            "description": "Filter the knowledge graph to a specific content type.",
            "endpoint": "https://www.mattartz.me/wp-json/kgh/v1/data",
            "method": "GET",
            "parameters": [
                {
                    "name": "content_type",
                    "type": "string",
                    "description": "Content type slug.",
                    "required": true,
                    "enum": [
                        "entity",
                        "post",
                        "article",
                        "book",
                        "chapter",
                        "podcast",
                        "music",
                        "software",
                        "artwork",
                        "event",
                        "op-ed",
                        "page",
                        "press_media"
                    ]
                }
            ],
            "response_format": "application/json",
            "example_response": {
                "total": 619,
                "total_pages": 7,
                "page": 1,
                "per_page": 100,
                "items": [
                    {
                        "name": "Example Entity",
                        "url": "https://www.mattartz.me/entities/example-entity/",
                        "content_type": "Entity",
                        "schema_type": "Person",
                        "description": "Short description of the entity."
                    }
                ]
            }
        },
        {
            "name": "filter_by_schema_type",
            "description": "Filter the knowledge graph to a specific Schema.org type.",
            "endpoint": "https://www.mattartz.me/wp-json/kgh/v1/data",
            "method": "GET",
            "parameters": [
                {
                    "name": "schema_type",
                    "type": "string",
                    "description": "Schema.org type name.",
                    "required": true
                }
            ],
            "response_format": "application/json",
            "example_response": {
                "total": 619,
                "total_pages": 7,
                "page": 1,
                "per_page": 100,
                "items": [
                    {
                        "name": "Example Entity",
                        "url": "https://www.mattartz.me/entities/example-entity/",
                        "content_type": "Entity",
                        "schema_type": "Person",
                        "description": "Short description of the entity."
                    }
                ]
            }
        },
        {
            "name": "fetch_schema_graph",
            "description": "Fetch the full site knowledge graph as Schema.org JSON-LD. Supports pagination and type filtering.",
            "endpoint": "https://www.mattartz.me/wp-json/kgh/schemagraph",
            "method": "GET",
            "parameters": [
                {
                    "name": "page",
                    "type": "integer",
                    "description": "Page number for pagination.",
                    "required": false,
                    "default": 1
                },
                {
                    "name": "per_page",
                    "type": "integer",
                    "description": "Graph nodes per page (1-100).",
                    "required": false,
                    "default": 100
                },
                {
                    "name": "type",
                    "type": "string",
                    "description": "Filter to one Schema.org type (e.g., Book, Person, ScholarlyArticle).",
                    "required": false
                }
            ],
            "response_format": "application/ld+json",
            "example_response": {
                "@context": "https://schema.org",
                "@graph": [
                    {
                        "@type": "Person",
                        "@id": "https://www.mattartz.me/#person",
                        "name": "Matt Artz",
                        "description": "Short description of the Person node."
                    }
                ]
            }
        },
        {
            "name": "get_entity_involvements",
            "description": "List all content posts (events, podcasts, articles, chapters, books, etc.) that reference a given entity via ACF relationship fields. Returns structured involvements grouped by post type, with role (author/editor/performer/contributor/etc.), source field, and date. Useful for writing Matt-centered entity descriptions or displaying reverse relationships on entity pages.",
            "endpoint": "https://www.mattartz.me/wp-json/kgh/v1/entity/{id}/involvements",
            "endpoint_by_slug": "https://www.mattartz.me/wp-json/kgh/v1/entity/by-slug/{slug}/involvements",
            "method": "GET",
            "parameters": [
                {
                    "name": "id",
                    "type": "integer",
                    "description": "Entity post ID.",
                    "required": true,
                    "location": "path"
                },
                {
                    "name": "slug",
                    "type": "string",
                    "description": "Entity slug (alternative to id).",
                    "required": true,
                    "location": "path"
                },
                {
                    "name": "types",
                    "type": "string",
                    "description": "Comma-separated filter of content types (any of entity, post, article, book, chapter, podcast, music, software, artwork, event, op-ed, page, press_media).",
                    "required": false
                },
                {
                    "name": "roles",
                    "type": "string",
                    "description": "Comma-separated filter of roles (e.g. author,editor,performer).",
                    "required": false
                }
            ],
            "response_format": "application/json"
        }
    ],
    "related_resources": [
        {
            "name": "WebMCP In-Page Tools",
            "url": "https://www.mattartz.me/mcp/#webmcp",
            "description": "Live in-page tools (W3C WebMCP, document.modelContext) for agents that open a page of this site in a compatible browser, such as the ChatGPT desktop app's built-in browser or Chrome under the WebMCP origin trial: every page exposes search_knowledge_graph, open_entity, fetch_schema_graph. Publication pages add cite_this, list_references, open_doi. Page-bound: nothing is callable until a page is open, and nothing to install. Distinct from the remote MCP endpoint, which serves the same graph without a browser.",
            "format": "text/html",
            "transport": "webmcp",
            "tools": [
                "search_knowledge_graph",
                "open_entity",
                "fetch_schema_graph"
            ],
            "publication_tools": [
                "cite_this",
                "list_references",
                "open_doi"
            ]
        },
        {
            "name": "MCP Endpoint (JSON-RPC over HTTP POST)",
            "url": "https://www.mattartz.me/wp-json/mcp/mattartz-kg",
            "description": "Model Context Protocol runtime endpoint. JSON-RPC 2.0 over POST; 9 read-only tools (kgh-search-knowledge-graph, kgh-list-by-type, kgh-fetch-schema-graph, kgh-get-page-graph, kgh-get-entity-involvements, kgh-get-related-content, kgh-get-post-content, kgh-get-citation, kgh-view-graph). GET with Accept: text/event-stream opens the event stream; other GETs return 405.",
            "format": "application/json",
            "transport": "mcp+http",
            "method": "POST"
        },
        {
            "name": "OpenAPI Specification",
            "url": "https://www.mattartz.me/wp-json/kgh/v1/openapi.json",
            "description": "OpenAPI 3.1 specification for the knowledge graph REST API.",
            "format": "application/json"
        },
        {
            "name": "Knowledge Graph (JSON-LD)",
            "url": "https://www.mattartz.me/wp-json/kgh/schemagraph",
            "description": "Full site knowledge graph as Schema.org JSON-LD @graph.",
            "format": "application/ld+json"
        },
        {
            "name": "Knowledge Graph (RDF Turtle)",
            "url": "https://www.mattartz.me/graph.ttl",
            "description": "Single-file Turtle dump of the full knowledge graph for foundation-model ingestion. ETag + Last-Modified + 304 supported.",
            "format": "text/turtle"
        },
        {
            "name": "Semantic Sitemap (RDF dataset)",
            "url": "https://www.mattartz.me/graph-dataset.xml",
            "description": "Semantic Sitemap with sc: extension pointing to the RDF Turtle dump.",
            "format": "application/xml"
        },
        {
            "name": "A2A Agent Card",
            "url": "https://www.mattartz.me/.well-known/agent-card.json",
            "description": "A2A 1.0 Agent Card: the discovery document of the site agent, whose JSON-RPC interface answers messages with completed tasks over the knowledge graph.",
            "format": "application/json"
        },
        {
            "name": "LLMs.txt",
            "url": "https://www.mattartz.me/llms.txt",
            "description": "Markdown-formatted site map optimized for LLM consumption.",
            "format": "text/plain"
        },
        {
            "name": "LLMs.txt (full catalog)",
            "url": "https://www.mattartz.me/llms-full.txt",
            "description": "Complete content catalog with abstracts, DOIs, podcast episodes, and entity descriptions.",
            "format": "text/plain"
        },
        {
            "name": "Entity Browser",
            "url": "https://www.mattartz.me/entities/",
            "description": "Interactive HTML table of all knowledge graph items with search, filter, and sort.",
            "format": "text/html"
        },
        {
            "name": "Knowledge Graph Visualization",
            "url": "https://www.mattartz.me/knowledge-graph/",
            "description": "Interactive force-directed graph explorer.",
            "format": "text/html"
        },
        {
            "name": "XML Sitemap",
            "url": "https://www.mattartz.me/sitemap_index.xml",
            "description": "Complete index of crawlable pages.",
            "format": "application/xml"
        }
    ],
    "scopes": {
        "visual": "Every published post that is a knowledge graph entity, belongs to an auto-included content type, or is a post or page tagged with an entity type, minus posts flagged kgh_exclude_from_graph; unconnected posts are drawn too. One edge per relationship, Schema.org property names only. The site owner is keyed by the About page URL; canonicalId gives the JSON-LD identifier where it differs. The WebSite root is not drawn.",
        "schemaGraph": "The same posts as the visual graph, as Schema.org JSON-LD, plus the WebSite root node; the site owner is keyed by the #person identifier. Paginated at 100 objects per page (see the X-WP-TotalPages and Link headers); /graph.ttl is the single-file export.",
        "rest": "Every published post of the content types entity, post, page, article, book, chapter, podcast, music, software, artwork, event, op-ed, press_media regardless of relationships, including pages and works that no other node links to, when post_type=any is requested; the default is entity posts only.",
        "relationshipCrosswalk": "The graph payload at https://www.mattartz.me/knowledge-graph/ and the kgh-view-graph MCP tool carry a relationshipCrosswalk documenting every JSON-LD property that is renamed, collapsed to one direction, or omitted when rendered as a visual edge; unlisted properties keep their Schema.org names."
    },
    "authentication": "none",
    "rate_limits": "none",
    "supported_languages": [
        "en"
    ],
    "permissions": {
        "ai_training": true,
        "search": true,
        "ai_input": true
    }
}