graphql-schema-reconstruction

Reconstruct GraphQL schemas using error-oracle techniques when introspection is disabled.

7|4|Updated Jun 22, 2026
One-click install
npx skills add https://github.com/dbx0/skills --skill graphql-schema-reconstruction-dbx0
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: graphql-schema-reconstruction
Source: https://github.com/dbx0/skills/tree/main/skills/web-appsec/discovery/graphql-schema-reconstruction
Command: npx skills add https://github.com/dbx0/skills --skill graphql-schema-reconstruction-dbx0

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? GraphQL endpoints frequently disable standard introspection (__schema, __type), returning uniform generic errors that block schema enumeration during security assessments. This Skill recovers fields, mutations, and types anyway by exploiting the differential between validation-stage and execution-stage errors. ## Core Features & Use Cases - Error-Oracle Enumeration: Use wrong-typed variables, the @skip(if: true) directive, and empty input objects to confirm field names, argument types, and input object shapes one response at a time. - Safe Mutation Probing: Validate that mutations exist without invoking their resolvers, so no state-changing side effects occur during reconnaissance. - Design-Intent Triage: Cross-reference recovered operations against client bundle call sites to separate deliberate pre-auth checks, correctly gated operations, and dead legacy surface worth reporting. - Use Case: During an authorized assessment, introspection on a production GraphQL endpoint returns a generic error for every query. Use these oracle techniques with a wordlist seeded from the recovered client bundle to map the real attack surface before testing authorization on individual fields. ## Quick Start Ask the agent to enumerate the GraphQL endpoint's schema using error-oracle techniques since standard introspection is blocked.

Frequently Asked Questions about graphql-schema-reconstruction

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I enumerate a GraphQL schema when introspection is disabled?

Send queries with deliberately wrong-typed variables for guessed field names and observe the error responses. Detailed type-mismatch errors confirm the field, argument, and type exist, while generic errors indicate a wrong guess. Iterate over a wordlist of plausible field names.

How can I test GraphQL mutations without triggering side effects?

Wrap the guessed mutation field in the @skip(if: true) directive. The query passes validation, confirming the field exists, but the resolver never executes, so no state change occurs on the server.

What does sending an empty input object to a GraphQL mutation reveal?

Sending an empty object to a mutation that expects a custom input type often triggers a validation error listing every required field and its type. This dumps the input object's full shape in a single response without guessing field names individually.

Is a recovered GraphQL field name a vulnerability by itself?

No, recovered field and mutation names are attack-surface disclosure, typically informational or low severity. It only escalates if calling the field returns data to unauthorized users or a mutation executes state changes without proper authorization.

When should I use error-oracle enumeration instead of standard introspection?

Use it after standard __schema and __type introspection attempts fail with uniform generic errors. It also applies when a recovered client bundle declares a partial contract and you need to find undeclared fields the server still accepts.