{
  "name": "metkagram-static-mcp",
  "version": "1.0.0+8bda5f7406ae",
  "description": "Read-only MCP tool specification for Metkagram's public learning API, including capability routing and communicative-intent discovery.",
  "attribution": {
    "source": "Metkagram",
    "source_url": "https://metkagram.github.io",
    "source_repository": "https://github.com/metkagram/metkagram.github.io",
    "creator": "Metkagram",
    "creator_url": "https://github.com/metkagram",
    "maintainer": "Applied Systems Lab at MetalHatsCats",
    "maintainer_url": "https://metalhatscats.com",
    "license": "Metkagram Source-Available Terms",
    "license_url": "https://metkagram.github.io/en/licensing/",
    "rights_status": "source-available-not-open-source",
    "rights_url": "https://metkagram.github.io/rights.json",
    "historical_license": "CC BY-NC 4.0 before 2026-08-17; prior grants remain valid for copies received under those terms",
    "attribution_required": true,
    "attribution_text": "Source: Metkagram — https://metkagram.github.io/",
    "attribution_html": "Source: <a href=\"https://metkagram.github.io/\">Metkagram</a>",
    "terms_url": "https://metkagram.github.io/en/licensing/",
    "privacy_url": "https://metkagram.github.io/en/legal/privacy/",
    "contact_email": "metalhatscats@gmail.com",
    "contact_url": "https://www.linkedin.com/company/metalhatscats",
    "collaboration_url": "https://metkagram.github.io/en/licensing/"
  },
  "tools": [
    {
      "name": "metkagram_discover",
      "title": "Discover the right Metkagram surface",
      "description": "Get deterministic guidance on when to use Pattern Lens, intent discovery, Practice, Pattern Graph, MCP or the public API.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/discovery.json"
    },
    {
      "name": "metkagram_get_agent_integration_recipes",
      "title": "Get verified integration recipes",
      "description": "Get provider-neutral end-to-end recipes that preserve canonical Metkagram IDs, provenance and abstention boundaries.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/agent-integration-recipes.json"
    },
    {
      "name": "metkagram_get_ai_recipes",
      "title": "Get AI learning recipes",
      "description": "List public AI workflows that preserve stable IDs and canonical URLs.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/ai-recipes.json"
    },
    {
      "name": "metkagram_get_bridges",
      "title": "Get Metkagram Bridges",
      "description": "Get reviewed cross-language links between Frames. Missing Bridges are intentional and must not be guessed.",
      "staticUrl": "https://metkagram.github.io/api/v1/bridges.json",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      }
    },
    {
      "name": "metkagram_get_canonical_frames",
      "title": "Get canonical Metkagram Frames",
      "description": "Get explicit canonical Frame families and representative formulas without collapsing legacy Pattern records.",
      "staticUrl": "https://metkagram.github.io/api/v1/canonical-frames.json",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      }
    },
    {
      "name": "metkagram_get_choice",
      "title": "Get one reviewed Choice drill",
      "description": "Resolve a reviewed Pattern Choice Clinic drill by stable ID without scraping HTML.",
      "inputSchema": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "staticUrlTemplate": "https://metkagram.github.io/api/v1/choices/{id}.json"
    },
    {
      "name": "metkagram_get_choice_drills",
      "title": "Get pattern choice drills",
      "description": "Get reviewed two-option scenarios for distinguishing nearby reusable language patterns before feedback.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/choice-drills.json"
    },
    {
      "name": "metkagram_get_contrasts",
      "description": "Get reviewed distinctions between nearby reusable language patterns.",
      "inputSchema": {
        "type": "object"
      },
      "staticUrl": "https://metkagram.github.io/api/v1/contrasts.json"
    },
    {
      "name": "metkagram_get_cross_language_map",
      "title": "Get English-German functional map",
      "description": "Get reviewed English and German forms that belong to the same canonical Metkagram reasoning pattern ID.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/cross-language-map.json"
    },
    {
      "name": "metkagram_get_domain_model",
      "title": "Get Metkagram domain model",
      "description": "Get the Move → Frame → Bridge model, language capabilities, invariants and dataset URLs.",
      "staticUrl": "https://metkagram.github.io/api/v1/domain-model.json",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      }
    },
    {
      "name": "metkagram_get_editorial_readiness",
      "title": "Get study-set editorial readiness",
      "description": "Use Metkagram's categorical A/B/C/D review state to choose reviewed starter material without inventing an efficacy score.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/editorial-readiness.json"
    },
    {
      "name": "metkagram_get_frame_variants",
      "title": "Get Metkagram Frame variants",
      "description": "Resolve stable Pattern Frames to explicit canonical Frames when a reviewed-pilot FrameVariant relation exists.",
      "staticUrl": "https://metkagram.github.io/api/v1/frame-variants.json",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      }
    },
    {
      "name": "metkagram_get_frames",
      "title": "Get Metkagram Frames",
      "description": "Get language-specific reusable Frames with formulas, examples and normalized translation maps.",
      "staticUrl": "https://metkagram.github.io/api/v1/frames.json",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      }
    },
    {
      "name": "metkagram_get_language_pilots",
      "title": "Get Metkagram language pilots",
      "description": "Get Frame-only pilot languages, coverage counts and explicit capability boundaries.",
      "staticUrl": "https://metkagram.github.io/api/v1/language-pilots.json",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      }
    },
    {
      "name": "metkagram_get_learning_event_schema",
      "description": "Read the schema for learner-controlled browser-local activity exports.",
      "staticUrl": "https://metkagram.github.io/api/v1/learning-event-schema.json"
    },
    {
      "name": "metkagram_get_moves",
      "title": "Get Metkagram Moves",
      "description": "Get language-independent communicative and reasoning jobs connected to reviewed Frames.",
      "staticUrl": "https://metkagram.github.io/api/v1/moves.json",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      }
    },
    {
      "name": "metkagram_get_pattern",
      "description": "Get a single pattern by ID.",
      "inputSchema": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "staticUrlTemplate": "https://metkagram.github.io/api/v1/patterns/{id}.json"
    },
    {
      "name": "metkagram_get_pattern_graph",
      "description": "Get the bounded public graph of related reasoning patterns and their nearest reusable alternatives.",
      "inputSchema": {
        "type": "object"
      },
      "staticUrl": "https://metkagram.github.io/api/v1/pattern-graph.json"
    },
    {
      "name": "metkagram_get_pattern_relations",
      "title": "Get pattern relations",
      "description": "Get reviewed contrasts, choice drills and reasoning packs connected to canonical Metkagram pattern IDs.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/pattern-relations.json"
    },
    {
      "name": "metkagram_get_reasoning_packs",
      "title": "Get curated reasoning packs",
      "description": "Get reviewed learning routes that sequence canonical patterns, contrasts and choice drills around one reasoning job.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/reasoning-packs.json"
    },
    {
      "name": "metkagram_get_route",
      "title": "Get one reviewed reasoning Route",
      "description": "Resolve a reviewed Reasoning Pack by stable ID while preserving the canonical ordered step references.",
      "inputSchema": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "staticUrlTemplate": "https://metkagram.github.io/api/v1/routes/{id}.json"
    },
    {
      "name": "metkagram_get_set",
      "description": "Get a study set and its patterns.",
      "inputSchema": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "staticUrlTemplate": "https://metkagram.github.io/api/v1/sets/{id}.json"
    },
    {
      "name": "metkagram_get_spoken_practice_handoffs",
      "title": "Get spoken-practice handoff references",
      "description": "Get bounded provider-neutral reference handoffs that preserve canonical Metkagram IDs, provenance and rights for external rehearsal tools.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/spoken-practice-handoffs.json"
    },
    {
      "name": "metkagram_get_teacher_exports",
      "title": "Get teacher and tutor exports",
      "description": "List portable reviewed Reasoning Pack bundles with stable IDs, attribution and canonical links.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/api/v1/teacher-exports.json"
    },
    {
      "name": "metkagram_list_annotations",
      "description": "List annotated documents for a target language and collection.",
      "inputSchema": {
        "type": "object",
        "required": [
          "target",
          "collection"
        ],
        "properties": {
          "target": {
            "type": "string",
            "enum": [
              "en",
              "de"
            ]
          },
          "collection": {
            "type": "string",
            "enum": [
              "dialogues",
              "patterns",
              "library"
            ]
          }
        }
      },
      "staticUrlTemplate": "https://metkagram.github.io/api/v1/annotations/{target}/{collection}.json"
    },
    {
      "name": "metkagram_list_intents",
      "title": "List communicative intents",
      "description": "List communicative goals and reasoning moves so a tutor can start from what the learner wants a sentence to do.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false
      },
      "staticUrl": "https://metkagram.github.io/data/intents.json"
    },
    {
      "name": "metkagram_list_patterns",
      "description": "List all reusable B2–C1 pattern summaries.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "default": 1
          }
        }
      },
      "staticUrl": "https://metkagram.github.io/api/v1/patterns/index.json"
    },
    {
      "name": "metkagram_list_sets",
      "description": "List all study sets.",
      "inputSchema": {
        "type": "object"
      },
      "staticUrl": "https://metkagram.github.io/api/v1/sets.json"
    },
    {
      "name": "metkagram_search_index",
      "description": "Download the static search index (patterns, sets, categories).",
      "inputSchema": {
        "type": "object"
      },
      "staticUrl": "https://metkagram.github.io/api/v1/search-index.json"
    }
  ],
  "runtime_note": "This file is a static adapter/tool manifest, not a hosted remote MCP transport endpoint.",
  "teaching_manifest": "https://metkagram.github.io/api/v1/teaching-manifest.json",
  "recommended_agent_role": "Use Metkagram to choose teachable patterns for humans, not to improve the model's own general language generation.",
  "protocol": {
    "modern": "2026-07-28",
    "legacyFallback": "2025-11-25",
    "transport": "local stdio bridge",
    "hostedRemoteEndpoint": false
  },
  "local_learning_activity": {
    "schema": "https://metkagram.github.io/api/v1/learning-event-schema.json",
    "note": "Learning events are browser-local and are never available to a remote MCP client unless a learner explicitly exports and provides them."
  }
}
