{
  "apiVersion": "2.23.8",
  "name": "The Block Graph WebMCP API",
  "manifestUrl": "/webmcp/api.json",
  "changelogUrl": "/webmcp/changelog.json",
  "readableChangelogUrl": "/webmcp/CHANGELOG.md",
  "documentationUrl": "/webmcp/README.md",
  "versionPolicy": {
    "major": "Incompatible input, output or documented behavior changes.",
    "minor": "Compatible additions, including tools or optional fields.",
    "patch": "Compatible fixes. Dataset refreshes and site builds alone do not change API version.",
    "rangeSyntax": [
      "exact stable x.y.z",
      "^x.y.z",
      "~x.y.z"
    ],
    "bootstrap": "get_api_info remains the stable discovery entry point across major versions."
  },
  "response": {
    "common": [
      "ok",
      "apiVersion",
      "buildNumber",
      "releaseDate",
      "builtAt",
      "environment",
      "dataset",
      "policyVersion",
      "policyUrl"
    ],
    "success": "data",
    "failure": "error: {code,message}",
    "development": "buildNumber, releaseDate and builtAt are null; environment is development.",
    "dataset": "null for discovery; otherwise {edition,version,sourceRevision}.",
    "pagination": "items,total,offset,limit,nextOffset; nextOffset is null at the end.",
    "discovery": "data also includes agentPolicy (complete conduct policy), capabilities (explicit site coverage and gaps), and policyCompatibility."
  },
  "tools": [
    {
      "name": "block_graph_get_api_info",
      "description": "Discover API compatibility, all nine tools and schemas, the numbered farm progression dictionary, provisional-label status and scale guide URL, game snapshots, build identity and changelog links. Call first; requiredApiRange reports compatibility without blocking discovery. Read the agent conduct policy and capability gaps before using content tools; gameplay ethics are unspecified. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "block_graph_get_api_changes",
      "description": "Read API releases newer than sinceVersion, including breaking changes and migration guidance. Missing sinceVersion returns all releases. Follow the agent conduct policy published by block_graph_get_api_info. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sinceVersion": {
            "type": "string",
            "description": "Stable semantic version, e.g. 1.0.0. Exclusive; future versions are rejected.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "block_graph_search_resources",
      "description": "Look up blocks, items or entities in an explicit edition. Returns exact keys for subsequent calls, provenance, survival status and page links. Follow the agent conduct policy published by block_graph_get_api_info. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "edition": {
            "type": "string",
            "enum": [
              "java",
              "bedrock"
            ],
            "description": "Explicit Minecraft edition; never inferred from saved UI settings."
          },
          "query": {
            "type": "string",
            "description": "Resource name or Minecraft ID; empty lists all resources.",
            "minLength": 0,
            "maxLength": 250
          },
          "kind": {
            "type": "string",
            "enum": [
              "block",
              "item",
              "entity"
            ]
          },
          "offset": {
            "type": "integer",
            "description": "Zero-based offset; default 0.",
            "minimum": 0,
            "maximum": 100000
          },
          "limit": {
            "type": "integer",
            "description": "Page size; default 20.",
            "minimum": 1,
            "maximum": 100
          },
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "edition",
          "query"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "block_graph_get_resource",
      "description": "Get one resource, its registry properties, provenance, survival status and related tool connections. Registry inclusion is not proof of survival obtainability. Follow the agent conduct policy published by block_graph_get_api_info. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "edition": {
            "type": "string",
            "enum": [
              "java",
              "bedrock"
            ],
            "description": "Explicit Minecraft edition; never inferred from saved UI settings."
          },
          "resourceKey": {
            "type": "string",
            "description": "Exact edition-qualified key from block_graph_search_resources.",
            "minLength": 1,
            "maxLength": 250
          },
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "edition",
          "resourceKey"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "block_graph_get_acquisition_paths",
      "description": "Find source-indexed ways to obtain a resource, including biome, recipe, drop and candidate farm connections. Retains conditions and evidence; candidates are not guaranteed routes. Follow the agent conduct policy published by block_graph_get_api_info. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "edition": {
            "type": "string",
            "enum": [
              "java",
              "bedrock"
            ],
            "description": "Explicit Minecraft edition; never inferred from saved UI settings."
          },
          "resourceKey": {
            "type": "string",
            "description": "Exact edition-qualified key from block_graph_search_resources.",
            "minLength": 1,
            "maxLength": 250
          },
          "category": {
            "type": "string",
            "enum": [
              "biome",
              "growth",
              "generation",
              "creation",
              "spawn",
              "other"
            ]
          },
          "offset": {
            "type": "integer",
            "description": "Zero-based offset; default 0.",
            "minimum": 0,
            "maximum": 100000
          },
          "limit": {
            "type": "integer",
            "description": "Page size; default 20.",
            "minimum": 1,
            "maximum": 100
          },
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "edition",
          "resourceKey"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "block_graph_get_recipes",
      "description": "Get exact recipes for an output resource, quantities, alternatives, grid, stations, conditions and original sources. Uses the UI Any planks consolidation rules. Follow the agent conduct policy published by block_graph_get_api_info. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "edition": {
            "type": "string",
            "enum": [
              "java",
              "bedrock"
            ],
            "description": "Explicit Minecraft edition; never inferred from saved UI settings."
          },
          "resourceKey": {
            "type": "string",
            "description": "Exact edition-qualified key from block_graph_search_resources.",
            "minLength": 1,
            "maxLength": 250
          },
          "station": {
            "type": "string",
            "description": "Optional exact workstation ID, e.g. minecraft:crafting_table.",
            "minLength": 1,
            "maxLength": 250
          },
          "offset": {
            "type": "integer",
            "description": "Zero-based offset; default 0.",
            "minimum": 0,
            "maximum": 100000
          },
          "limit": {
            "type": "integer",
            "description": "Page size; default 20.",
            "minimum": 1,
            "maximum": 100
          },
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "edition",
          "resourceKey"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "block_graph_plan_recipes",
      "description": "Plan exact recipe steps for counted goals using supplied starting stock. Runs in a cancellable worker. Returns complete, needs-input or search-limit; does not prove unobtainability or minimum cost. Follow the agent conduct policy published by block_graph_get_api_info. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "edition": {
            "type": "string",
            "enum": [
              "java",
              "bedrock"
            ],
            "description": "Explicit Minecraft edition; never inferred from saved UI settings."
          },
          "goals": {
            "type": "array",
            "minItems": 1,
            "maxItems": 20,
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "description": "Exact edition-qualified key from block_graph_search_resources.",
                  "minLength": 1,
                  "maxLength": 250
                },
                "count": {
                  "type": "integer",
                  "description": "Whole resource quantity.",
                  "minimum": 1,
                  "maximum": 999999
                }
              },
              "required": [
                "key",
                "count"
              ],
              "additionalProperties": false
            }
          },
          "inventory": {
            "type": "object",
            "description": "Exact edition-qualified resource keys mapped to quantities. Inventory accepts items; base accepts blocks.",
            "maxProperties": 200,
            "additionalProperties": {
              "type": "integer",
              "description": "Whole resource quantity.",
              "minimum": 1,
              "maximum": 999999
            }
          },
          "base": {
            "type": "object",
            "description": "Exact edition-qualified resource keys mapped to quantities. Inventory accepts items; base accepts blocks.",
            "maxProperties": 200,
            "additionalProperties": {
              "type": "integer",
              "description": "Whole resource quantity.",
              "minimum": 1,
              "maximum": 999999
            }
          },
          "biome": {
            "type": "string",
            "description": "Edition-qualified biome key. Defaults to this snapshot's plains biome.",
            "minLength": 1,
            "maxLength": 250
          },
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "edition",
          "goals"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "block_graph_search_farms",
      "description": "Find farms and generators available for this edition by query, shared group name or candidate output resource. Results include typed produces outcomes with icon metadata, numeric Required Progress estimates and can sort by progress or name. Each result retains its source ID and adds canonicalFarmId, UI variants and equivalent-record aliases with direct links. Dimension is catalogue origin, not a promise of operating compatibility. Each farm includes its persisted version {date, change} and nullable lastVerified event. The farm change number is independent of site builds and Minecraft versions. Follow the agent conduct policy published by block_graph_get_api_info. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical. Exact resource, tool, station and typed output ID filters plus rank bounds use the shared static farm JSON model. Results add requirements, jsonUrl and matchingLayoutIds. Requirements are partial; nonmatches do not prove an item unnecessary. Never treat all alternative inputs or outputs as simultaneous. Non-productive bat habitat is excluded from farm listings; the historical get_farm and individual JSON URLs remain resolvable.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "edition": {
            "type": "string",
            "enum": [
              "java",
              "bedrock"
            ],
            "description": "Explicit Minecraft edition; never inferred from saved UI settings."
          },
          "query": {
            "type": "string",
            "description": "Farm name, output or starting resource; default empty.",
            "minLength": 0,
            "maxLength": 250
          },
          "outputResourceKey": {
            "type": "string",
            "description": "Exact edition-qualified key from block_graph_search_resources.",
            "minLength": 1,
            "maxLength": 250
          },
          "dimension": {
            "type": "string",
            "enum": [
              "overworld",
              "nether",
              "end",
              "shared"
            ]
          },
          "offset": {
            "type": "integer",
            "description": "Zero-based offset; default 0.",
            "minimum": 0,
            "maximum": 100000
          },
          "limit": {
            "type": "integer",
            "description": "Page size; default 20.",
            "minimum": 1,
            "maximum": 100
          },
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          },
          "sortBy": {
            "type": "string",
            "enum": [
              "name",
              "progress"
            ],
            "description": "Default name. Progress uses the shared numeric rank for each source record and its default example."
          },
          "sortDirection": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Default asc. Progress ties use farm name and ID ascending for stable pagination."
          },
          "requiresResources": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 250
            },
            "maxItems": 20,
            "description": "Exact namespaced IDs. All listed IDs must match the same layout. Input matches include explicitly accepted alternatives; output matches preserve typed identities. A missing match can reflect incomplete mapping."
          },
          "requiresTools": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 250
            },
            "maxItems": 20,
            "description": "Exact namespaced IDs. All listed IDs must match the same layout. Input matches include explicitly accepted alternatives; output matches preserve typed identities. A missing match can reflect incomplete mapping."
          },
          "requiresStations": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 250
            },
            "maxItems": 20,
            "description": "Exact namespaced IDs. All listed IDs must match the same layout. Input matches include explicitly accepted alternatives; output matches preserve typed identities. A missing match can reflect incomplete mapping."
          },
          "producesIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 250
            },
            "maxItems": 20,
            "description": "Exact namespaced IDs. All listed IDs must match the same layout. Input matches include explicitly accepted alternatives; output matches preserve typed identities. A missing match can reflect incomplete mapping."
          },
          "minProgressRank": {
            "type": "integer",
            "minimum": 1,
            "maximum": 11
          },
          "maxProgressRank": {
            "type": "integer",
            "minimum": 1,
            "maximum": 11
          },
          "layoutScope": {
            "type": "string",
            "enum": [
              "default",
              "any"
            ],
            "description": "Default searches the illustrated default. Any returns records with at least one single layout satisfying all filters; matchingLayoutIds identifies those layouts. Progress sorting continues to use the default rank."
          }
        },
        "required": [
          "edition"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "block_graph_get_farm",
      "description": "Read Required Progress rank, actual access/equipment gates, cost estimate and the original farm record, setup, conditions, evidence, operation modes, review and compact default blueprint with categorized resources/tools/stations, core automation logic, space measurements and available layout alternatives, plus canonicalFarmId, its UI members and species specializations and equivalent-record aliases. Legacy IDs remain valid; request canonicalFarmId for the displayed farm or a variant ID for its distinct mechanics. Construction review is not an in-game test. Optional hint.productionNotes separates harvest baselines, modifiers and output conditions from concise production quantities and labels; typed outcome conditions remain available. Typed produces outcomes distinguish items, entities, XP, representative categories, block states, access and no harvest. Each farm includes its persisted version {date, change} and nullable lastVerified event. The farm change number is independent of site builds and Minecraft versions. Follow the agent conduct policy published by block_graph_get_api_info. Proper API use is allowed; credit The Block Graph for resource or API use. Site cloning is prohibited and unethical. Adds catalogueRecord: the same stable farm object served by the static farm JSON endpoint, including per-layout categorized requirements, outputs, gates and progress.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "edition": {
            "type": "string",
            "enum": [
              "java",
              "bedrock"
            ],
            "description": "Explicit Minecraft edition; never inferred from saved UI settings."
          },
          "farmId": {
            "type": "string",
            "description": "Exact ID from block_graph_search_farms.",
            "minLength": 1,
            "maxLength": 250
          },
          "mode": {
            "type": "integer",
            "description": "Zero-based operation mode. Default 0; omit to discover available modes.",
            "minimum": 0,
            "maximum": 20
          },
          "requiredApiRange": {
            "type": "string",
            "description": "Expected API: stable exact version, caret or tilde range, e.g. 2.0.0, ^2.0.0 or ~2.0.0. Other range syntax is unsupported.",
            "minLength": 1,
            "maxLength": 80
          },
          "requiredPolicyVersion": {
            "type": "string",
            "description": "Optional exact stable agent-policy version, e.g. 2.0.0. A mismatch blocks content calls; discovery still returns the policy and reports matches:false.",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "edition",
          "farmId"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    }
  ],
  "agentPolicyUrl": "/webmcp/agent-policy.json",
  "readableAgentPolicyUrl": "/webmcp/AGENT-POLICY.md",
  "capabilitiesUrl": "/webmcp/capabilities.json",
  "farmJson": {
    "schemaVersion": "1.0.0",
    "documentationUrl": "/data/farms/v1/README.md",
    "schemaUrl": "/data/farms/v1/schema.json",
    "catalogueUrl": "/data/farms/v1/{edition}/catalogue.json",
    "farmUrl": "/data/farms/v1/{edition}/{farmId}.json",
    "graphUrl": "/data/farms/v1/{edition}/graph.json",
    "delivery": "Prerendered static JSON; no PHP, live Minecraft server or runtime API process required."
  }
}
