{
  "openapi": "3.1.1",
  "info": {
    "title": "MEV Explorer API",
    "version": "1.0.0",
    "summary": "Who extracted value in this block? Sandwiches, arbitrage, liquidations, builder and tips.",
    "description": "Every endpoint performs the same calculation as the human page and returns inputs, result, units, assumptions, sources, warnings and computedAt. MCP endpoint: /mcp."
  },
  "servers": [
    {
      "url": "https://mevexplorer.usefulweb.site"
    }
  ],
  "paths": {
    "/api/v1/calculate": {
      "post": {
        "operationId": "calculate",
        "summary": "Who extracted value in this block? Sandwiches, arbitrage, liquidations, builder and tips.",
        "description": "Fetches one recent block and all of its receipts from a public node and looks for maximal-extractable-value patterns: sandwich attacks on Uniswap V2/V3-style pools (an actor trading right before and after a victim in the same pool), cyclic arbitrage (a transaction whose sender or contract ends with more of a token and less of none), Aave V3 liquidations, the block builder (fee recipient and extraData tag, plus the builder→proposer payment) and a priority-fee ranking.\n\nMethodology:\n- Data: eth_getBlockByNumber(n, true) and eth_getBlockReceipts(n) (falls back to one eth_getTransactionReceipt per transaction, max 300).\n- Swaps: Uniswap V2 Swap(address,uint256,uint256,uint256,uint256,address) and V3 Swap(address,address,int256,int256,uint160,uint128,int24) logs (also emitted by the many forks using the same events), converted to pool deltas; direction = which token the pool received.\n- Sandwich: in one pool, a front-run and back-run by the same actor (same sender, or the same `to` contract when at most two senders call it in the block — public routers are excluded) in opposite directions, bracketing a victim swap by a different actor in the front-run's direction; the back-run must sell 50–105 % of what the front-run bought. Profit = what the back-run took out minus what the front-run put in, per pool token (before gas and builder tips).\n- Cyclic arbitrage: a transaction with swaps in ≥ 2 pools in which the sender or the called contract paid out a token and got more of that same token back, with no token ending negative (from ERC-20 Transfer logs). CoW Protocol settlements (GPv2Settlement) are excluded.\n- Liquidations: Aave V3 LiquidationCall events; the emitter is checked against the official Aave V3 Pool for the chain.\n- Builder: the block fee recipient (miner) and printable extraData; the builder→proposer payment is the last transaction sent by the fee recipient. Tips = (effectiveGasPrice − baseFee) × gasUsed; direct coinbase transfers inside contracts are not visible without traces.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "mev_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MevExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Mini block with a sandwich, an arbitrage and a liquidation (offline)",
                  "value": {
                    "mode": "pasted",
                    "chain": "ethereum",
                    "blockJson": "{\"block\":{\"number\":\"0x1312d00\",\"hash\":\"0xabababababababababababababababababababababababababababababababab\",\"timestamp\":\"0x66669980\",\"miner\":\"0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97\",\"extraData\":\"0x546974616e2028746974616e6275696c6465722e78797a29\",\"baseFeePerGas\":\"0x2540be400\",\"gasUsed\":\"0xf4240\"},\"transactions\":[{\"hash\":\"0x0101010101010101010101010101010101010101010101010101010101010101\",\"transactionIndex\":\"0x0\",\"from\":\"0xaaaa00000000000000000000000000000000aaaa\",\"to\":\"0xb0b0000000000000000000000000000000000b0b\",\"value\":\"0x0\",\"gasPrice\":\"0xdf8475800\",\"type\":\"0x2\"},{\"hash\":\"0x0202020202020202020202020202020202020202020202020202020202020202\",\"transactionIndex\":\"0x1\",\"from\":\"0x1234500000000000000000000000000000012345\",\"to\":\"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\"value\":\"0x0\",\"gasPrice\":\"0x2cb417800\",\"type\":\"0x2\"},{\"hash\":\"0x0303030303030303030303030303030303030303030303030303030303030303\",\"transactionIndex\":\"0x2\",\"from\":\"0xaaaa00000000000000000000000000000000aaaa\",\"to\":\"0xb0b0000000000000000000000000000000000b0b\",\"value\":\"0x0\",\"gasPrice\":\"0x28fa6ae00\",\"type\":\"0x2\"},{\"hash\":\"0x0404040404040404040404040404040404040404040404040404040404040404\",\"transactionIndex\":\"0x3\",\"from\":\"0xcccc00000000000000000000000000000000cccc\",\"to\":\"0xa2b0000000000000000000000000000000000a2b\",\"value\":\"0x0\",\"gasPrice\":\"0x9502f9000\",\"type\":\"0x2\"},{\"hash\":\"0x0505050505050505050505050505050505050505050505050505050505050505\",\"transactionIndex\":\"0x4\",\"from\":\"0xdddd00000000000000000000000000000000dddd\",\"to\":\"0xdddd00000000000000000000000000000000dddd\",\"value\":\"0x0\",\"gasPrice\":\"0x37e11d600\",\"type\":\"0x2\"},{\"hash\":\"0x0606060606060606060606060606060606060606060606060606060606060606\",\"transactionIndex\":\"0x5\",\"from\":\"0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97\",\"to\":\"0x5555500000000000000000000000000000055555\",\"value\":\"0xb1a2bc2ec50000\",\"gasPrice\":\"0x2540be400\",\"type\":\"0x2\"}],\"receipts\":[{\"transactionHash\":\"0x0101010101010101010101010101010101010101010101010101010101010101\",\"status\":\"0x1\",\"gasUsed\":\"0x1d4c0\",\"effectiveGasPrice\":\"0xdf8475800\",\"logs\":[{\"address\":\"0x9000000000000000000000000000000000000009\",\"topics\":[\"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822\",\"0x000000000000000000000000b0b0000000000000000000000000000000000b0b\",\"0x000000000000000000000000b0b0000000000000000000000000000000000b0b\"],\"data\":\"0x0000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a817c800\",\"logIndex\":\"0x0\"}]},{\"transactionHash\":\"0x0202020202020202020202020202020202020202020202020202020202020202\",\"status\":\"0x1\",\"gasUsed\":\"0x249f0\",\"effectiveGasPrice\":\"0x2cb417800\",\"logs\":[{\"address\":\"0x9000000000000000000000000000000000000009\",\"topics\":[\"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822\",\"0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d\",\"0x0000000000000000000000001234500000000000000000000000000000012345\"],\"data\":\"0x0000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000248202200\",\"logIndex\":\"0x1\"}]},{\"transactionHash\":\"0x0303030303030303030303030303030303030303030303030303030303030303\",\"status\":\"0x1\",\"gasUsed\":\"0x1adb0\",\"effectiveGasPrice\":\"0x28fa6ae00\",\"logs\":[{\"address\":\"0x9000000000000000000000000000000000000009\",\"topics\":[\"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822\",\"0x000000000000000000000000b0b0000000000000000000000000000000000b0b\",\"0x000000000000000000000000b0b0000000000000000000000000000000000b0b\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000008d8dadf544fc00000000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x2\"}]},{\"transactionHash\":\"0x0404040404040404040404040404040404040404040404040404040404040404\",\"status\":\"0x1\",\"gasUsed\":\"0x3d090\",\"effectiveGasPrice\":\"0x9502f9000\",\"logs\":[{\"address\":\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\",\"0x0000000000000000000000009100000000000000000000000000000000000091\"],\"data\":\"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000\",\"logIndex\":\"0x3\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000009100000000000000000000000000000000000091\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000077359400\",\"logIndex\":\"0x4\"},{\"address\":\"0x9100000000000000000000000000000000000091\",\"topics\":[\"0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\"],\"data\":\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff88ca6c000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x5\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\",\"0x0000000000000000000000009200000000000000000000000000000000000092\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000077359400\",\"logIndex\":\"0x6\"},{\"address\":\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000009200000000000000000000000000000000000092\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\"],\"data\":\"0x0000000000000000000000000000000000000000000000000e043da617250000\",\"logIndex\":\"0x7\"},{\"address\":\"0x9200000000000000000000000000000000000092\",\"topics\":[\"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000773594000000000000000000000000000000000000000000000000000e043da6172500000000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x8\"}]},{\"transactionHash\":\"0x0505050505050505050505050505050505050505050505050505050505050505\",\"status\":\"0x1\",\"gasUsed\":\"0x61a80\",\"effectiveGasPrice\":\"0x37e11d600\",\"logs\":[{\"address\":\"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2\",\"topics\":[\"0xe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286\",\"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"0x000000000000000000000000eeee00000000000000000000000000000000eeee\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000012a05f2000000000000000000000000000000000000000000000000001d24b2dfac520000000000000000000000000000dddd00000000000000000000000000000000dddd0000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x9\"}]},{\"transactionHash\":\"0x0606060606060606060606060606060606060606060606060606060606060606\",\"status\":\"0x1\",\"gasUsed\":\"0x5208\",\"effectiveGasPrice\":\"0x2540be400\",\"logs\":[]}]}"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MevExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tool": {
      "get": {
        "operationId": "getToolDefinition",
        "summary": "Inputs, output schema and examples for this tool",
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "MevExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "pasted"
            ],
            "default": "lookup"
          },
          "chain": {
            "title": "Chain",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "block": {
            "title": "Block number",
            "description": "Public nodes only serve recent blocks (roughly the last day); older blocks need your own node (RPC_URL_<CHAIN>).",
            "type": "string",
            "maxLength": 20,
            "default": "latest"
          },
          "blockJson": {
            "title": "Block JSON (offline)",
            "description": "{\"block\": {number, miner, extraData, baseFeePerGas, timestamp}, \"transactions\": [...], \"receipts\": [...]} as returned by eth_getBlockByNumber(…, true) and eth_getBlockReceipts.",
            "type": "string",
            "maxLength": 3000000
          }
        },
        "required": []
      },
      "MevExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chain",
              "block",
              "receiptsSource",
              "swapsDetected",
              "sandwiches",
              "arbitrages",
              "liquidations",
              "priorityRanking",
              "totalTipsEth",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "lookup",
                  "pasted"
                ]
              },
              "chain": {
                "type": "string"
              },
              "block": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "number",
                  "hash",
                  "timestamp",
                  "miner",
                  "builderTag",
                  "baseFeeGwei",
                  "txCount",
                  "proposerPayment"
                ],
                "properties": {
                  "number": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "hash": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "timestamp": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "miner": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "builderTag": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "baseFeeGwei": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "txCount": {
                    "type": "integer"
                  },
                  "proposerPayment": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": false,
                    "required": [
                      "to",
                      "valueEth",
                      "tx"
                    ],
                    "properties": {
                      "to": {
                        "type": "string"
                      },
                      "valueEth": {
                        "type": "string"
                      },
                      "tx": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "receiptsSource": {
                "type": "string"
              },
              "swapsDetected": {
                "type": "integer"
              },
              "sandwiches": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "pool",
                    "version",
                    "token0",
                    "token1",
                    "attacker",
                    "victimFrom",
                    "frontTx",
                    "victimTx",
                    "backTx",
                    "frontIndex",
                    "victimIndex",
                    "backIndex",
                    "profitToken0",
                    "profitToken1"
                  ],
                  "properties": {
                    "pool": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    },
                    "token0": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "token1": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "attacker": {
                      "type": "string"
                    },
                    "victimFrom": {
                      "type": "string"
                    },
                    "frontTx": {
                      "type": "string"
                    },
                    "victimTx": {
                      "type": "string"
                    },
                    "backTx": {
                      "type": "string"
                    },
                    "frontIndex": {
                      "type": "integer"
                    },
                    "victimIndex": {
                      "type": "integer"
                    },
                    "backIndex": {
                      "type": "integer"
                    },
                    "profitToken0": {
                      "type": "string"
                    },
                    "profitToken1": {
                      "type": "string"
                    }
                  }
                }
              },
              "arbitrages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "tx",
                    "txIndex",
                    "actor",
                    "pools",
                    "profits"
                  ],
                  "properties": {
                    "tx": {
                      "type": "string"
                    },
                    "txIndex": {
                      "type": "integer"
                    },
                    "actor": {
                      "type": "string"
                    },
                    "pools": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "profits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "token",
                          "symbol",
                          "raw",
                          "amount"
                        ],
                        "properties": {
                          "token": {
                            "type": "string"
                          },
                          "symbol": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "raw": {
                            "type": "string"
                          },
                          "amount": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              },
              "liquidations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "tx",
                    "protocol",
                    "collateralAsset",
                    "debtAsset",
                    "user",
                    "debtToCoverRaw",
                    "liquidatedCollateralRaw",
                    "liquidator",
                    "receiveAToken"
                  ],
                  "properties": {
                    "tx": {
                      "type": "string"
                    },
                    "protocol": {
                      "type": "string"
                    },
                    "collateralAsset": {
                      "type": "string"
                    },
                    "debtAsset": {
                      "type": "string"
                    },
                    "user": {
                      "type": "string"
                    },
                    "debtToCoverRaw": {
                      "type": "string"
                    },
                    "liquidatedCollateralRaw": {
                      "type": "string"
                    },
                    "liquidator": {
                      "type": "string"
                    },
                    "receiveAToken": {
                      "type": "boolean"
                    }
                  }
                }
              },
              "priorityRanking": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "rank",
                    "tx",
                    "index",
                    "from",
                    "to",
                    "tipPerGasGwei",
                    "tipEth",
                    "tags"
                  ],
                  "properties": {
                    "rank": {
                      "type": "integer"
                    },
                    "tx": {
                      "type": "string"
                    },
                    "index": {
                      "type": "integer"
                    },
                    "from": {
                      "type": "string"
                    },
                    "to": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "tipPerGasGwei": {
                      "type": "string"
                    },
                    "tipEth": {
                      "type": "string"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "totalTipsEth": {
                "type": "string"
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "label",
                        "kind"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "label"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      }
    }
  }
}