{
  "title": "JSON path inventory",
  "human_url": "https://happytails.ai/en/data-tools/json-path-inventory/",
  "agent_url": "https://happytails.ai/agents/en/data-tools/json-path-inventory/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/data-tools/json-path-inventory.md",
  "content": "JSON path inventory\nFind the paths and value types in sample JSON. Compare field presence across records and download an inventory.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use JSON path inventory\nPaste JSON and select Whole document or Array of records.\nReview the observed paths, types and presence counts.\nDownload the inventory and report.\nUseful next steps\nJSON array grouper\nJSON flattener\nJSONL validator\nInspect a whole document or a sample of records\nChoose Whole document for one object, array or scalar. Choose Array of records to compare paths relative to each item in the root array. The empty path represents the document or sample record itself.\nSee observed types and missing fields\nEach path lists its observed types, the number of records containing it and the number missing it. Null counts as present with a null type. Nested arrays use exact numeric indices, so /items/0/name and /items/1/name remain separate observations.\nUse the inventory as evidence about your sample\nDownload the JSON inventory and report to inspect inconsistent types or optional fields. This is not a generated schema or a guarantee about future records. JSON Pointer escaping keeps slashes, tildes and empty object keys unambiguous.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "JSON array grouper",
      "url": "https://happytails.ai/en/data-tools/json-array-grouper/"
    },
    {
      "name": "JSON flattener",
      "url": "https://happytails.ai/en/data-tools/json-flattener/"
    },
    {
      "name": "JSONL validator",
      "url": "https://happytails.ai/en/data-tools/jsonl-validator/"
    }
  ],
  "tool": {
    "id": "json-path-inventory",
    "category": "data-tools",
    "built": true,
    "requirements": "At most 10,000 sample records or observed paths. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate keys, negative zero and numbers that cannot safely retain their decimal value are rejected. Quote precision-sensitive numbers as strings. Formatting and object member order may change. Processing stays on your device. Each JSON Pointer is limited to 20,000 characters. Distinct path text is limited to 1,000,000 characters in total.",
    "implementation": {
      "fields": [
        {
          "key": "scope",
          "label": "Inspect",
          "value": "Array of records",
          "type": "select",
          "values": [
            "Array of records",
            "Whole document"
          ]
        }
      ],
      "live": true,
      "presentation": "metrics",
      "note": "List exact paths, observed types and present/missing counts. In Array of records mode, pointers are relative to each record. Array positions use explicit indices, not wildcard guesses. Up to 10,000 observed paths. This describes the sample, not every future record. Runs on your device. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate JSON keys, unsafe integers, negative zero and decimals that would change on JSON serialization are rejected rather than rounded. Quote precision-sensitive numbers as strings. Output whitespace and object-member order may change. Each JSON Pointer is limited to 20,000 characters.",
      "experience": {
        "automatic": true,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "JSON input",
        "placeholder": "[{\"name\":\"Ana\",\"score\":90},{\"name\":\"Bea\",\"score\":null},{\"name\":\"Cam\"}]",
        "help": "Paste text to process locally. Review the result before downloading. Results update as you type. Up to 1,000,000 characters.",
        "action": null
      },
      "mode": "automatic",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# JSON path inventory\n\n- Human page: https://happytails.ai/en/data-tools/json-path-inventory/\n- Markdown: https://happytails.ai/en/data-tools/json-path-inventory.md\n- Structured JSON: https://happytails.ai/agents/en/data-tools/json-path-inventory/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `json-path-inventory` |\n| Category | data-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Automatic updates after valid input or file selection. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nList exact paths, observed types and present/missing counts. In Array of records mode, pointers are relative to each record. Array positions use explicit indices, not wildcard guesses. Up to 10,000 observed paths. This describes the sample, not every future record. Runs on your device. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate JSON keys, unsafe integers, negative zero and decimals that would change on JSON serialization are rejected rather than rounded. Quote precision-sensitive numbers as strings. Output whitespace and object-member order may change. Each JSON Pointer is limited to 20,000 characters.\n\n### Inputs and settings\n\nText input: JSON input.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\n[{\"name\":\"Ana\",\"score\":90},{\"name\":\"Bea\",\"score\":null},{\"name\":\"Cam\"}]\n```\n\nPaste text to process locally. Review the result before downloading. Results update as you type. Up to 1,000,000 characters.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `scope` | Inspect | select | \"Array of records\" | Allowed: Array of records, Whole document |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nAt most 10,000 sample records or observed paths. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate keys, negative zero and numbers that cannot safely retain their decimal value are rejected. Quote precision-sensitive numbers as strings. Formatting and object member order may change. Processing stays on your device. Each JSON Pointer is limited to 20,000 characters. Distinct path text is limited to 1,000,000 characters in total.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"json-path-inventory\",\n  \"category\": \"data-tools\",\n  \"built\": true,\n  \"requirements\": \"At most 10,000 sample records or observed paths. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate keys, negative zero and numbers that cannot safely retain their decimal value are rejected. Quote precision-sensitive numbers as strings. Formatting and object member order may change. Processing stays on your device. Each JSON Pointer is limited to 20,000 characters. Distinct path text is limited to 1,000,000 characters in total.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"scope\",\n        \"label\": \"Inspect\",\n        \"value\": \"Array of records\",\n        \"type\": \"select\",\n        \"values\": [\n          \"Array of records\",\n          \"Whole document\"\n        ]\n      }\n    ],\n    \"live\": true,\n    \"presentation\": \"metrics\",\n    \"note\": \"List exact paths, observed types and present/missing counts. In Array of records mode, pointers are relative to each record. Array positions use explicit indices, not wildcard guesses. Up to 10,000 observed paths. This describes the sample, not every future record. Runs on your device. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate JSON keys, unsafe integers, negative zero and decimals that would change on JSON serialization are rejected rather than rounded. Quote precision-sensitive numbers as strings. Output whitespace and object-member order may change. Each JSON Pointer is limited to 20,000 characters.\",\n    \"experience\": {\n      \"automatic\": true,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"JSON input\",\n      \"placeholder\": \"[{\\\"name\\\":\\\"Ana\\\",\\\"score\\\":90},{\\\"name\\\":\\\"Bea\\\",\\\"score\\\":null},{\\\"name\\\":\\\"Cam\\\"}]\",\n      \"help\": \"Paste text to process locally. Review the result before downloading. Results update as you type. Up to 1,000,000 characters.\",\n      \"action\": null\n    },\n    \"mode\": \"automatic\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nFind the paths and value types in sample JSON. Compare field presence across records and download an inventory.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use JSON path inventory\n\n1. Paste JSON and select Whole document or Array of records.\n2. Review the observed paths, types and presence counts.\n3. Download the inventory and report.\n\n## Useful next steps\n\n- [JSON array grouper](https://happytails.ai/en/data-tools/json-array-grouper/) ([Markdown](https://happytails.ai/en/data-tools/json-array-grouper.md))\n\n- [JSON flattener](https://happytails.ai/en/data-tools/json-flattener/) ([Markdown](https://happytails.ai/en/data-tools/json-flattener.md))\n\n- [JSONL validator](https://happytails.ai/en/data-tools/jsonl-validator/) ([Markdown](https://happytails.ai/en/data-tools/jsonl-validator.md))\n\n## Inspect a whole document or a sample of records\n\nChoose Whole document for one object, array or scalar. Choose Array of records to compare paths relative to each item in the root array. The empty path represents the document or sample record itself.\n\n### See observed types and missing fields\n\nEach path lists its observed types, the number of records containing it and the number missing it. Null counts as present with a null type. Nested arrays use exact numeric indices, so /items/0/name and /items/1/name remain separate observations.\n\n### Use the inventory as evidence about your sample\n\nDownload the JSON inventory and report to inspect inconsistent types or optional fields. This is not a generated schema or a guarantee about future records. JSON Pointer escaping keeps slashes, tildes and empty object keys unambiguous.\n"
}