{
  "title": "JSON flattener",
  "human_url": "https://happytails.ai/en/data-tools/json-flattener/",
  "agent_url": "https://happytails.ai/agents/en/data-tools/json-flattener/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/data-tools/json-flattener.md",
  "content": "JSON flattener\nTurn nested JSON into reversible path records. Preserve arrays, empty objects and value types without guessing at dot-separated keys.\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 flattener\nPaste nested JSON or a JSON scalar.\nReview the path, type and value table.\nDownload the path document, or paste it into JSON unflattener to reverse the operation.\nUseful next steps\nJSON unflattener\nJSON path inventory\nJSON array grouper\nGive every JSON value an exact path\nPaste an object, array or scalar. The output uses RFC 6901 JSON Pointers with an explicit type for every value and container. The empty path represents the root. A key named a/b becomes /a~1b and a literal tilde becomes ~0.\nPreserve the structure needed to reverse the operation\nArrays and objects have separate container records, even when empty. This keeps an array index distinct from an object key such as \"0\". Scalar records retain their string, number, boolean or null type. The download uses the versioned happytails-json-paths-v1 format.\nRebuild the original values later\nPaste the complete download into JSON unflattener to reconstruct the same supported JSON values and structure. Whitespace, numeric spelling and object member order may change. Flattened output must remain within the unflattener input limit; larger expansions are rejected rather than truncated.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "JSON unflattener",
      "url": "https://happytails.ai/en/data-tools/json-unflattener/"
    },
    {
      "name": "JSON path inventory",
      "url": "https://happytails.ai/en/data-tools/json-path-inventory/"
    },
    {
      "name": "JSON array grouper",
      "url": "https://happytails.ai/en/data-tools/json-array-grouper/"
    }
  ],
  "tool": {
    "id": "json-flattener",
    "category": "data-tools",
    "built": true,
    "requirements": "At most 10,000 path records and 1,000,000 characters in the reversible output. 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.",
    "implementation": {
      "fields": [],
      "live": true,
      "presentation": "metrics",
      "note": "Create reversible typed JSON Pointer records, including containers and empty arrays or objects. The output can be pasted directly into JSON unflattener. Reversible output is limited to 10,000 path records and 1,000,000 characters. 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\",\"tags\":[\"blue\"],\"empty\":{}}",
        "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 flattener\n\n- Human page: https://happytails.ai/en/data-tools/json-flattener/\n- Markdown: https://happytails.ai/en/data-tools/json-flattener.md\n- Structured JSON: https://happytails.ai/agents/en/data-tools/json-flattener/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `json-flattener` |\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\nCreate reversible typed JSON Pointer records, including containers and empty arrays or objects. The output can be pasted directly into JSON unflattener. Reversible output is limited to 10,000 path records and 1,000,000 characters. 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\",\"tags\":[\"blue\"],\"empty\":{}}\n```\n\nPaste text to process locally. Review the result before downloading. Results update as you type. Up to 1,000,000 characters.\n\nNo additional settings are declared for this tool.\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 path records and 1,000,000 characters in the reversible output. 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.\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-flattener\",\n  \"category\": \"data-tools\",\n  \"built\": true,\n  \"requirements\": \"At most 10,000 path records and 1,000,000 characters in the reversible output. 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.\",\n  \"implementation\": {\n    \"fields\": [],\n    \"live\": true,\n    \"presentation\": \"metrics\",\n    \"note\": \"Create reversible typed JSON Pointer records, including containers and empty arrays or objects. The output can be pasted directly into JSON unflattener. Reversible output is limited to 10,000 path records and 1,000,000 characters. 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\\\",\\\"tags\\\":[\\\"blue\\\"],\\\"empty\\\":{}}\",\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\nTurn nested JSON into reversible path records. Preserve arrays, empty objects and value types without guessing at dot-separated keys.\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 flattener\n\n1. Paste nested JSON or a JSON scalar.\n2. Review the path, type and value table.\n3. Download the path document, or paste it into JSON unflattener to reverse the operation.\n\n## Useful next steps\n\n- [JSON unflattener](https://happytails.ai/en/data-tools/json-unflattener/) ([Markdown](https://happytails.ai/en/data-tools/json-unflattener.md))\n\n- [JSON path inventory](https://happytails.ai/en/data-tools/json-path-inventory/) ([Markdown](https://happytails.ai/en/data-tools/json-path-inventory.md))\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## Give every JSON value an exact path\n\nPaste an object, array or scalar. The output uses RFC 6901 JSON Pointers with an explicit type for every value and container. The empty path represents the root. A key named a/b becomes /a~1b and a literal tilde becomes ~0.\n\n### Preserve the structure needed to reverse the operation\n\nArrays and objects have separate container records, even when empty. This keeps an array index distinct from an object key such as \"0\". Scalar records retain their string, number, boolean or null type. The download uses the versioned happytails-json-paths-v1 format.\n\n### Rebuild the original values later\n\nPaste the complete download into JSON unflattener to reconstruct the same supported JSON values and structure. Whitespace, numeric spelling and object member order may change. Flattened output must remain within the unflattener input limit; larger expansions are rejected rather than truncated.\n"
}