{
  "title": "GraphQL Query Validator",
  "human_url": "https://happytails.ai/en/developer-tools/graphql-query-validator/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/graphql-query-validator/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/graphql-query-validator.md",
  "content": "GraphQL Query Validator\nCheck GraphQL queries, mutations and fragments against your schema before you send them. Paste SDL or introspection JSON and see supported validation failures, with its line and column.\nHow to use GraphQL Query Validator\nPaste your GraphQL operations and fragments in the main box.\nPaste the schema as SDL or introspection JSON in the Schema field.\nOptionally add the variables as a JSON object.\nRun the check, then review each failed rule and download the JSON or CSV report.\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.\nUseful next steps\nGraphQL Schema Explorer\nGraphQL Query Cost Estimator\nJSON formatter\nAccepts up to 200,000 characters of operations, a schema of up to 1,000,000 characters and variables of up to 200,000 characters. Documents are limited to 100,000 tokens and 64 nesting levels, and schemas to 10,000 types. Validation runs in your browser in a background worker and nothing is sent to a GraphQL server. Downloads are a JSON report and a CSV list of errors.\nWhat is checked\nThe validator checks supported rules for fields and return types, leaf and object selections, arguments and required arguments, fragment names, targets, cycles and unused fragments, values and input objects including @oneOf, directives and their locations, and variable definitions, usage and types. When you add variables, their values are checked against the declared types too. The limitations below describe where the custom implementation stops.\nHow it works\nHappytails.ai uses its own bounded GraphQL parser and validator, not graphql-js. Response-name conflicts are compared across fragments and merged child selections, including return shape, arguments and mutually exclusive object branches. __schema and __type require a selection set, but their introspection subfields are not validated. This is not a full GraphQL implementation.\nReading the report\nEach error names the rule, a short explanation and the line and column in your operations. The schema itself must be usable: a missing Query type or a field that points to an undefined type stops the check with a message instead of a list.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "GraphQL Schema Explorer",
      "url": "https://happytails.ai/en/developer-tools/graphql-schema-explorer/"
    },
    {
      "name": "GraphQL Query Cost Estimator",
      "url": "https://happytails.ai/en/developer-tools/graphql-query-cost-estimator/"
    },
    {
      "name": "JSON formatter",
      "url": "https://happytails.ai/en/developer-tools/json-formatter/"
    }
  ],
  "tool": {
    "id": "graphql-query-validator",
    "category": "developer-tools",
    "built": true,
    "requirements": "Accepts up to 200,000 characters of operations, a schema of up to 1,000,000 characters and variables of up to 200,000 characters. Documents are limited to 100,000 tokens and 64 nesting levels, and schemas to 10,000 types. Validation runs in your browser in a background worker and nothing is sent to a GraphQL server. Downloads are a JSON report and a CSV list of errors.",
    "implementation": {
      "fields": [
        {
          "key": "schema",
          "label": "Schema",
          "value": "",
          "type": "textarea",
          "maxLength": 1000000,
          "help": "GraphQL SDL, or introspection JSON with a __schema object. It needs a Query type."
        },
        {
          "key": "variables",
          "label": "Variables, optional",
          "value": "",
          "type": "textarea",
          "maxLength": 200000,
          "help": "A JSON object such as {\"id\":\"1\"}. Leave it empty to skip checking variable values."
        }
      ],
      "registrationFamily": "api-contracts-schemas",
      "codeDirection": "ltr",
      "inputMaxLength": 200000,
      "inputErrorCode": "API_CONTRACTS_SCHEMAS_TOO_LONG_GRAPHQL_QUERY_VALIDATOR",
      "note": "Runs in your browser in a background worker. Accepts up to 200000 characters of operations and a schema of up to 1000000 characters.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 200000,
        "inputMode": "text",
        "label": "GraphQL operations",
        "placeholder": "query BookPage($id: ID!) { book(id: $id) { title } }",
        "help": "Queries, mutations, subscriptions and fragments. Put the schema in the Schema field. Up to 200,000 characters. Review the settings before running.",
        "helpParts": [
          "Queries, mutations, subscriptions and fragments. Put the schema in the Schema field.",
          "Up to 200,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": "# GraphQL Query Validator\n\n- Human page: https://happytails.ai/en/developer-tools/graphql-query-validator/\n- Markdown: https://happytails.ai/en/developer-tools/graphql-query-validator.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/graphql-query-validator/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `graphql-query-validator` |\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\nRuns in your browser in a background worker. Accepts up to 200000 characters of operations and a schema of up to 1000000 characters.\n\n### Inputs and settings\n\nText input: GraphQL operations.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\nquery BookPage($id: ID!) { book(id: $id) { title } }\n```\n\nQueries, mutations, subscriptions and fragments. Put the schema in the Schema field. Up to 200,000 characters. Review the settings before running.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `schema` | Schema | textarea | \"\" |  |\n| `variables` | Variables, optional | textarea | \"\" |  |\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\nAccepts up to 200,000 characters of operations, a schema of up to 1,000,000 characters and variables of up to 200,000 characters. Documents are limited to 100,000 tokens and 64 nesting levels, and schemas to 10,000 types. Validation runs in your browser in a background worker and nothing is sent to a GraphQL server. Downloads are a JSON report and a CSV list of errors.\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\": \"graphql-query-validator\",\n  \"category\": \"developer-tools\",\n  \"built\": true,\n  \"requirements\": \"Accepts up to 200,000 characters of operations, a schema of up to 1,000,000 characters and variables of up to 200,000 characters. Documents are limited to 100,000 tokens and 64 nesting levels, and schemas to 10,000 types. Validation runs in your browser in a background worker and nothing is sent to a GraphQL server. Downloads are a JSON report and a CSV list of errors.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"schema\",\n        \"label\": \"Schema\",\n        \"value\": \"\",\n        \"type\": \"textarea\",\n        \"maxLength\": 1000000,\n        \"help\": \"GraphQL SDL, or introspection JSON with a __schema object. It needs a Query type.\"\n      },\n      {\n        \"key\": \"variables\",\n        \"label\": \"Variables, optional\",\n        \"value\": \"\",\n        \"type\": \"textarea\",\n        \"maxLength\": 200000,\n        \"help\": \"A JSON object such as {\\\"id\\\":\\\"1\\\"}. Leave it empty to skip checking variable values.\"\n      }\n    ],\n    \"registrationFamily\": \"api-contracts-schemas\",\n    \"codeDirection\": \"ltr\",\n    \"inputMaxLength\": 200000,\n    \"inputErrorCode\": \"API_CONTRACTS_SCHEMAS_TOO_LONG_GRAPHQL_QUERY_VALIDATOR\",\n    \"note\": \"Runs in your browser in a background worker. Accepts up to 200000 characters of operations and a schema of up to 1000000 characters.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 200000,\n      \"inputMode\": \"text\",\n      \"label\": \"GraphQL operations\",\n      \"placeholder\": \"query BookPage($id: ID!) { book(id: $id) { title } }\",\n      \"help\": \"Queries, mutations, subscriptions and fragments. Put the schema in the Schema field. Up to 200,000 characters. Review the settings before running.\",\n      \"helpParts\": [\n        \"Queries, mutations, subscriptions and fragments. Put the schema in the Schema field.\",\n        \"Up to 200,000 characters.\",\n        \"Review the settings before running.\"\n      ],\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\nCheck GraphQL queries, mutations and fragments against your schema before you send them. Paste SDL or introspection JSON and see supported validation failures, with its line and column.\n\n### How to use GraphQL Query Validator\n\n1. Paste your GraphQL operations and fragments in the main box.\n2. Paste the schema as SDL or introspection JSON in the Schema field.\n3. Optionally add the variables as a JSON object.\n4. Run the check, then review each failed rule and download the JSON or CSV report.\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## Useful next steps\n\n- [GraphQL Schema Explorer](https://happytails.ai/en/developer-tools/graphql-schema-explorer/) ([Markdown](https://happytails.ai/en/developer-tools/graphql-schema-explorer.md))\n\n- [GraphQL Query Cost Estimator](https://happytails.ai/en/developer-tools/graphql-query-cost-estimator/) ([Markdown](https://happytails.ai/en/developer-tools/graphql-query-cost-estimator.md))\n\n- [JSON formatter](https://happytails.ai/en/developer-tools/json-formatter/) ([Markdown](https://happytails.ai/en/developer-tools/json-formatter.md))\n\nAccepts up to 200,000 characters of operations, a schema of up to 1,000,000 characters and variables of up to 200,000 characters. Documents are limited to 100,000 tokens and 64 nesting levels, and schemas to 10,000 types. Validation runs in your browser in a background worker and nothing is sent to a GraphQL server. Downloads are a JSON report and a CSV list of errors.\n\n## What is checked\n\nThe validator checks supported rules for fields and return types, leaf and object selections, arguments and required arguments, fragment names, targets, cycles and unused fragments, values and input objects including @oneOf, directives and their locations, and variable definitions, usage and types. When you add variables, their values are checked against the declared types too. The limitations below describe where the custom implementation stops.\n\n### How it works\n\nHappytails.ai uses its own bounded GraphQL parser and validator, not graphql-js. Response-name conflicts are compared across fragments and merged child selections, including return shape, arguments and mutually exclusive object branches. \\_\\_schema and \\_\\_type require a selection set, but their introspection subfields are not validated. This is not a full GraphQL implementation.\n\n### Reading the report\n\nEach error names the rule, a short explanation and the line and column in your operations. The schema itself must be usable: a missing Query type or a field that points to an undefined type stops the check with a message instead of a list.\n"
}