{
  "title": "API pagination merger",
  "human_url": "https://happytails.ai/en/developer-tools/api-pagination-merger/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/api-pagination-merger/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/api-pagination-merger.md",
  "content": "API pagination merger\nMerge uploaded page exports into one record array with duplicate detection, explicit conflict handling and source provenance.\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 API pagination merger\nPaste the documented input and choose the relevant settings.\nRun the local diagnostic and inspect its findings.\nDownload the complete output and reports. Tables preview the first 200 rows.\nUseful next steps\nRemove duplicates from a JSON array\nJSON array grouper\nRetain the source of every retained record\nChoose JSON Pointers to each page’s records and each record’s duplicate key. Keep first, keep last and keep all have different results. Keep last preserves the first output position while updating its provenance. Missing keys either reject the merge or remain separate, according to your explicit setting.\nKeep the complete report\nJSON records the full result, settings and assumptions. CSV contains exact JSON Pointer paths, value types and JSON value envelopes for every report node, including typed object and array markers. Preview limits do not truncate downloadable reports.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Remove duplicates from a JSON array",
      "url": "https://happytails.ai/en/developer-tools/json-array-unique/"
    },
    {
      "name": "JSON array grouper",
      "url": "https://happytails.ai/en/data-tools/json-array-grouper/"
    }
  ],
  "tool": {
    "id": "api-pagination-merger",
    "category": "developer-tools",
    "built": true,
    "requirements": "Supply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Processing stays on your device. JSON supports up to 1,000,000 input characters, 50,000 values and 64 nesting levels. Duplicate keys and numbers that cannot survive JSON serialization exactly are rejected. Operations are limited to 100,000 comparisons, 4,000,000 JSON output characters and 8,000,000 CSV output characters. Tables show the first 200 rows; downloads preserve the complete report. CSV uses exact JSON Pointer paths and typed JSON value envelopes for spreadsheet-safe reporting.",
    "implementation": {
      "fields": [
        {
          "key": "recordsPath",
          "label": "Record-array JSON Pointer",
          "value": "/data",
          "type": "text"
        },
        {
          "key": "keyPath",
          "label": "Duplicate-key JSON Pointer",
          "value": "/id",
          "type": "text"
        },
        {
          "key": "duplicates",
          "label": "Duplicate records",
          "value": "Keep first",
          "type": "select",
          "values": [
            "Keep first",
            "Keep last",
            "Keep all"
          ]
        },
        {
          "key": "missing",
          "label": "Missing duplicate keys",
          "value": "Reject missing keys",
          "type": "select",
          "values": [
            "Reject missing keys",
            "Keep missing keys separate"
          ]
        }
      ],
      "presentation": "metrics",
      "inputMaxLength": 1000000,
      "inputErrorCode": "DATA_DIAGNOSTIC_INPUT",
      "note": "Supply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Processing stays on your device. JSON supports up to 1,000,000 input characters, 50,000 values and 64 nesting levels. Duplicate keys and numbers that cannot survive JSON serialization exactly are rejected. Operations are limited to 100,000 comparisons, 4,000,000 JSON output characters and 8,000,000 CSV output characters. Tables show the first 200 rows; downloads preserve the complete report. CSV uses exact JSON Pointer paths and typed JSON value envelopes for spreadsheet-safe reporting.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "JSON input",
        "placeholder": "[\n  {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"Ada\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Lin\"\n      }\n    ]\n  },\n  {\n    \"data\": [\n      {\n        \"id\": 2,\n        \"name\": \"Lin updated\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Sam\"\n      }\n    ]\n  }\n]",
        "help": "Supply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Up to 1,000,000 characters. Review the settings before running.",
        "action": null
      },
      "mode": "explicit",
      "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": "# API pagination merger\n\n- Human page: https://happytails.ai/en/developer-tools/api-pagination-merger/\n- Markdown: https://happytails.ai/en/developer-tools/api-pagination-merger.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/api-pagination-merger/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `api-pagination-merger` |\n| Category | developer-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\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\nSupply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Processing stays on your device. JSON supports up to 1,000,000 input characters, 50,000 values and 64 nesting levels. Duplicate keys and numbers that cannot survive JSON serialization exactly are rejected. Operations are limited to 100,000 comparisons, 4,000,000 JSON output characters and 8,000,000 CSV output characters. Tables show the first 200 rows; downloads preserve the complete report. CSV uses exact JSON Pointer paths and typed JSON value envelopes for spreadsheet-safe reporting.\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[\n  {\n    \"data\": [\n      {\n        \"id\": 1,\n        \"name\": \"Ada\"\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Lin\"\n      }\n    ]\n  },\n  {\n    \"data\": [\n      {\n        \"id\": 2,\n        \"name\": \"Lin updated\"\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Sam\"\n      }\n    ]\n  }\n]\n```\n\nSupply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Up to 1,000,000 characters. Review the settings before running.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `recordsPath` | Record-array JSON Pointer | text | \"/data\" |  |\n| `keyPath` | Duplicate-key JSON Pointer | text | \"/id\" |  |\n| `duplicates` | Duplicate records | select | \"Keep first\" | Allowed: Keep first, Keep last, Keep all |\n| `missing` | Missing duplicate keys | select | \"Reject missing keys\" | Allowed: Reject missing keys, Keep missing keys separate |\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\nSupply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Processing stays on your device. JSON supports up to 1,000,000 input characters, 50,000 values and 64 nesting levels. Duplicate keys and numbers that cannot survive JSON serialization exactly are rejected. Operations are limited to 100,000 comparisons, 4,000,000 JSON output characters and 8,000,000 CSV output characters. Tables show the first 200 rows; downloads preserve the complete report. CSV uses exact JSON Pointer paths and typed JSON value envelopes for spreadsheet-safe reporting.\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\": \"api-pagination-merger\",\n  \"category\": \"developer-tools\",\n  \"built\": true,\n  \"requirements\": \"Supply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Processing stays on your device. JSON supports up to 1,000,000 input characters, 50,000 values and 64 nesting levels. Duplicate keys and numbers that cannot survive JSON serialization exactly are rejected. Operations are limited to 100,000 comparisons, 4,000,000 JSON output characters and 8,000,000 CSV output characters. Tables show the first 200 rows; downloads preserve the complete report. CSV uses exact JSON Pointer paths and typed JSON value envelopes for spreadsheet-safe reporting.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"recordsPath\",\n        \"label\": \"Record-array JSON Pointer\",\n        \"value\": \"/data\",\n        \"type\": \"text\"\n      },\n      {\n        \"key\": \"keyPath\",\n        \"label\": \"Duplicate-key JSON Pointer\",\n        \"value\": \"/id\",\n        \"type\": \"text\"\n      },\n      {\n        \"key\": \"duplicates\",\n        \"label\": \"Duplicate records\",\n        \"value\": \"Keep first\",\n        \"type\": \"select\",\n        \"values\": [\n          \"Keep first\",\n          \"Keep last\",\n          \"Keep all\"\n        ]\n      },\n      {\n        \"key\": \"missing\",\n        \"label\": \"Missing duplicate keys\",\n        \"value\": \"Reject missing keys\",\n        \"type\": \"select\",\n        \"values\": [\n          \"Reject missing keys\",\n          \"Keep missing keys separate\"\n        ]\n      }\n    ],\n    \"presentation\": \"metrics\",\n    \"inputMaxLength\": 1000000,\n    \"inputErrorCode\": \"DATA_DIAGNOSTIC_INPUT\",\n    \"note\": \"Supply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Processing stays on your device. JSON supports up to 1,000,000 input characters, 50,000 values and 64 nesting levels. Duplicate keys and numbers that cannot survive JSON serialization exactly are rejected. Operations are limited to 100,000 comparisons, 4,000,000 JSON output characters and 8,000,000 CSV output characters. Tables show the first 200 rows; downloads preserve the complete report. CSV uses exact JSON Pointer paths and typed JSON value envelopes for spreadsheet-safe reporting.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"JSON input\",\n      \"placeholder\": \"[\\n  {\\n    \\\"data\\\": [\\n      {\\n        \\\"id\\\": 1,\\n        \\\"name\\\": \\\"Ada\\\"\\n      },\\n      {\\n        \\\"id\\\": 2,\\n        \\\"name\\\": \\\"Lin\\\"\\n      }\\n    ]\\n  },\\n  {\\n    \\\"data\\\": [\\n      {\\n        \\\"id\\\": 2,\\n        \\\"name\\\": \\\"Lin updated\\\"\\n      },\\n      {\\n        \\\"id\\\": 3,\\n        \\\"name\\\": \\\"Sam\\\"\\n      }\\n    ]\\n  }\\n]\",\n      \"help\": \"Supply page exports in an array and select their record-array and duplicate-key JSON Pointers. Duplicate keys compare by JSON type and structure. Choose how duplicates and missing keys are handled. Keep last replaces the record at its first output position. At most 1,000 pages and 10,000 records; no requests are sent. Up to 1,000,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\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\nMerge uploaded page exports into one record array with duplicate detection, explicit conflict handling and source provenance.\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 API pagination merger\n\n1. Paste the documented input and choose the relevant settings.\n2. Run the local diagnostic and inspect its findings.\n3. Download the complete output and reports. Tables preview the first 200 rows.\n\n## Useful next steps\n\n- [Remove duplicates from a JSON array](https://happytails.ai/en/developer-tools/json-array-unique/) ([Markdown](https://happytails.ai/en/developer-tools/json-array-unique.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## Retain the source of every retained record\n\nChoose JSON Pointers to each page’s records and each record’s duplicate key. Keep first, keep last and keep all have different results. Keep last preserves the first output position while updating its provenance. Missing keys either reject the merge or remain separate, according to your explicit setting.\n\n### Keep the complete report\n\nJSON records the full result, settings and assumptions. CSV contains exact JSON Pointer paths, value types and JSON value envelopes for every report node, including typed object and array markers. Preview limits do not truncate downloadable reports.\n"
}