# Pothos GraphQL > Pothos is a plugin based GraphQL schema builder for typescript Each page below is available as plain markdown at the listed .mdx URL. The full documentation in a single file: https://pothos-graphql.dev/llms-full.txt ## Docs - [Design](https://pothos-graphql.dev/docs/design.mdx): Design overview for Pothos - [Overview](https://pothos-graphql.dev/docs.mdx): Build type-safe GraphQL schemas in TypeScript. - [LLM Integration](https://pothos-graphql.dev/docs/llms.mdx): Read the Pothos documentation as plain text for use with LLMs and other tools. - [Resources](https://pothos-graphql.dev/docs/resources.mdx): External guides, tools, and libraries created by members of the Pothos community. - [Sponsors](https://pothos-graphql.dev/docs/sponsors.mdx): The generous people supporting Pothos development - [ArgBuilder](https://pothos-graphql.dev/docs/api/arg-builder.mdx): API docs for Pothos ArgBuilder - [FieldBuilder](https://pothos-graphql.dev/docs/api/field-builder.mdx): API docs for Pothos FieldBuilder - [InputFieldBuilder](https://pothos-graphql.dev/docs/api/input-field-builder.mdx): API docs for Pothos InputFieldBuilder - [SchemaBuilder](https://pothos-graphql.dev/docs/api/schema-builder.mdx): API docs for Pothos SchemaBuilder - [File layout](https://pothos-graphql.dev/docs/guide/app-layout.mdx): Guide for Pothos app layouts - [Using args](https://pothos-graphql.dev/docs/guide/args.mdx): Guide for defining field args in Pothos - [Default nullability](https://pothos-graphql.dev/docs/guide/changing-default-nullability.mdx): Configure schema-wide defaults and override them for individual fields. - [Circular References](https://pothos-graphql.dev/docs/guide/circular-references.mdx): Managing circular imports and recursive types in Pothos - [Using Context](https://pothos-graphql.dev/docs/guide/context.mdx): Guide for using context object in Pothos - [Enums](https://pothos-graphql.dev/docs/guide/enums.mdx): Define enum values and use them in fields and arguments. - [Fields](https://pothos-graphql.dev/docs/guide/fields.mdx): Guide for defining fields in Pothos - [Generating client types](https://pothos-graphql.dev/docs/guide/generating-client-types.mdx): Guide for generating client types from a Pothos schema - [Guide](https://pothos-graphql.dev/docs/guide.mdx): Install Pothos, build a schema, and run your first GraphQL query. - [Inferring Types](https://pothos-graphql.dev/docs/guide/inferring-types.mdx): Extract backing types and builder types for TypeScript helpers - [Input Objects](https://pothos-graphql.dev/docs/guide/inputs.mdx): Guide for defining Input Object types in Pothos - [Interfaces](https://pothos-graphql.dev/docs/guide/interfaces.mdx): Guide for defining Interface types in Pothos - [Objects](https://pothos-graphql.dev/docs/guide/objects.mdx): Define GraphQL object types from your application's data. - [Patterns](https://pothos-graphql.dev/docs/guide/patterns.mdx): Guide for using common patterns in Pothos - [Printing Schemas](https://pothos-graphql.dev/docs/guide/printing-schemas.mdx): Guide for printing a Pothos schema to an SDL schema file - [Queries, Mutations and Subscriptions](https://pothos-graphql.dev/docs/guide/queries-mutations-and-subscriptions.mdx): Guide for adding queries, mutations and subscriptions to your schema - [Scalars](https://pothos-graphql.dev/docs/guide/scalars.mdx): Register custom scalars and define their input and output behavior. - [SchemaBuilder](https://pothos-graphql.dev/docs/guide/schema-builder.mdx): Create a builder, configure TypeScript types, and build a GraphQL schema. - [Troubleshooting](https://pothos-graphql.dev/docs/guide/troubleshooting.mdx): Guide for troubleshooting common Pothos issues - [Unions](https://pothos-graphql.dev/docs/guide/unions.mdx): Guide for defining Union types in Pothos - [Using plugins](https://pothos-graphql.dev/docs/guide/using-plugins.mdx): Guide for using plugins with Pothos - [Writing plugins](https://pothos-graphql.dev/docs/guide/writing-plugins.mdx): Guide for writing plugins for Pothos - [Giraphql to Pothos](https://pothos-graphql.dev/docs/migrations/giraphql-pothos.mdx): Migration guide for upgrading from GiraphQL 2.* to Pothos 3.0 - [Migrations](https://pothos-graphql.dev/docs/migrations.mdx): List of Pothos migration guides - [v2.0](https://pothos-graphql.dev/docs/migrations/v2.mdx): Migration guide for upgrading from GiraphQL 1.* to GiraphQL 2.0 - [v4.0](https://pothos-graphql.dev/docs/migrations/v4.mdx): Migration guide for upgrading from Pothos 3.x to Pothos 4.0 - [Add GraphQL plugin](https://pothos-graphql.dev/docs/plugins/add-graphql.mdx): A plugin for adding existing GraphQL types to Pothos - [Complexity plugin](https://pothos-graphql.dev/docs/plugins/complexity.mdx): Complexity plugin docs for Pothos - [Dataloader plugin](https://pothos-graphql.dev/docs/plugins/dataloader.mdx): Dataloader plugin docs for Pothos - [Directive plugin](https://pothos-graphql.dev/docs/plugins/directives.mdx): Directive plugin docs for Pothos - [Errors plugin](https://pothos-graphql.dev/docs/plugins/errors.mdx): Errors plugin docs for Pothos - [Federation plugin](https://pothos-graphql.dev/docs/plugins/federation.mdx): Federation plugin docs for Pothos - [Grafast plugin](https://pothos-graphql.dev/docs/plugins/grafast.mdx): A plugin for building schemas with Grafast plans instead of resolvers - [Plugins](https://pothos-graphql.dev/docs/plugins.mdx): List of plugins for Pothos - [Mocks plugin](https://pothos-graphql.dev/docs/plugins/mocks.mdx): Mocks plugin docs for Pothos - [Relay plugin](https://pothos-graphql.dev/docs/plugins/relay.mdx): Relay plugin docs for Pothos - [Scope auth plugin](https://pothos-graphql.dev/docs/plugins/scope-auth.mdx): Authorize fields and types with request scopes, permission loaders, and ownership checks. - [Simple objects plugin](https://pothos-graphql.dev/docs/plugins/simple-objects.mdx): Simple objects plugin docs for Pothos - [Smart subscriptions plugin](https://pothos-graphql.dev/docs/plugins/smart-subscriptions.mdx): Smart subscriptions plugin docs for Pothos - [SubGraph plugin](https://pothos-graphql.dev/docs/plugins/sub-graph.mdx): SubGraph plugin docs for Pothos - [Tracing plugin](https://pothos-graphql.dev/docs/plugins/tracing.mdx): A Pothos plugin for tracing and logging resolver invocations - [Validation plugin](https://pothos-graphql.dev/docs/plugins/validation.mdx): Validation plugin docs for Pothos - [With-Input plugin](https://pothos-graphql.dev/docs/plugins/with-input.mdx): With-Input plugin docs for Pothos - [Zod Validation plugin](https://pothos-graphql.dev/docs/plugins/zod.mdx): Zod plugin docs for Pothos - [Connections](https://pothos-graphql.dev/docs/plugins/drizzle/connections.mdx): Creating relay connections with the Drizzle plugin - [Drizzle plugin](https://pothos-graphql.dev/docs/plugins/drizzle.mdx): A plugin to support efficient queries through drizzles relational query builder API - [Interfaces](https://pothos-graphql.dev/docs/plugins/drizzle/interfaces.mdx): Creating interfaces for drizzle tables that can be shared by variants - [Drizzle Objects](https://pothos-graphql.dev/docs/plugins/drizzle/objects.mdx): Defining GraphQL object types based on drizzle tables - [Ordering and cursors](https://pothos-graphql.dev/docs/plugins/drizzle/ordering-and-cursors.mdx): How a connection orders rows, and the cursors that ordering produces - [Query planning](https://pothos-graphql.dev/docs/plugins/drizzle/query-planning.mdx): How the plugin turns a GraphQL query into drizzle queries - [Relations](https://pothos-graphql.dev/docs/plugins/drizzle/relations.mdx): Adding relations to drizzle objects - [Relay](https://pothos-graphql.dev/docs/plugins/drizzle/relay.mdx): Using the Drizzle and Relay plugins together - [Selections](https://pothos-graphql.dev/docs/plugins/drizzle/selections.mdx): Selecting the columns and relations your fields need - [Setup](https://pothos-graphql.dev/docs/plugins/drizzle/setup.mdx): Setting up the Drizzle plugin - [Type variants](https://pothos-graphql.dev/docs/plugins/drizzle/variants.mdx): How to define multiple GraphQL types based on the same drizzle table - [Connections](https://pothos-graphql.dev/docs/plugins/prisma/connections.mdx): Creating relay connections with the Prisma plugin - [Prisma plugin](https://pothos-graphql.dev/docs/plugins/prisma.mdx): Prisma plugin docs for Pothos - [Indirect relations](https://pothos-graphql.dev/docs/plugins/prisma/indirect-relations.mdx): Indirect relations and join tables - [Interfaces](https://pothos-graphql.dev/docs/plugins/prisma/interfaces.mdx): Creating interfaces for prisma models that can be shared by variants - [Prisma Objects](https://pothos-graphql.dev/docs/plugins/prisma/objects.mdx): Prisma plugin docs for Pothos - [Prisma Utils](https://pothos-graphql.dev/docs/plugins/prisma/prisma-utils.mdx): Prisma utils for creating input types - [Query planning](https://pothos-graphql.dev/docs/plugins/prisma/query-planning.mdx): How the plugin turns a GraphQL query into prisma queries - [Relations](https://pothos-graphql.dev/docs/plugins/prisma/relations.mdx): Adding relations to prisma objects - [Relay](https://pothos-graphql.dev/docs/plugins/prisma/relay.mdx): Using the Prisma and Relay plugins together - [Selections](https://pothos-graphql.dev/docs/plugins/prisma/selections.mdx): how to use custom includes and selections to optimize your prisma queries - [Setup](https://pothos-graphql.dev/docs/plugins/prisma/setup.mdx): Setting up the Prisma plugin - [Type variants](https://pothos-graphql.dev/docs/plugins/prisma/variants.mdx): How to define multiple GraphQL types based on the same prisma model - [Prisma without a plugin](https://pothos-graphql.dev/docs/plugins/prisma/without-a-plugin.mdx): Using Prisma without a plugin