One product model. Every protocol.
Vadyl's API surface is not hand-maintained. REST routes, GraphQL SDL with executor, gRPC proto contracts, OpenAPI specs, MCP tool listings, typed SDKs in five languages — all compiled from the same product model and canonical descriptor graph. Change Customer, Order, or Subscription; every projection regenerates atomically. There is no client / server drift.
Compiled, not authored. Versioned end-to-end.
REST
Idiomatic routes per entity. Operation dispatcher routes through the canonical IApiOperationDispatcher — same authority as GraphQL, gRPC, MCP, CLI. Capability grants gate every endpoint.
GraphQL
SDL compiled from the same descriptor graph. Lightweight executor translates field selections to canonical CRUD. Same access enforcement, same masking, same expansion as REST.
gRPC
Proto contracts compiled from canonical types. Strongly-typed service definitions. Tool support across every gRPC ecosystem — protoc, buf, grpcurl.
OpenAPI
Generated alongside REST. Tooling-compatible (Swagger UI, Redocly, Stoplight, Postman). The spec moves atomically with the routes.
MCP
Canonical projection of the same dispatcher. tools/list filtered by capability grants. tools/call routes through the IApiOperationDispatcher. No second authority.
Typed SDKs
TypeScript, Python, C#, Go, Rust today. Java, Ruby, Kotlin, Swift, PHP planned. Each SDK embeds a manifest with seven version dimensions; generated-format mismatch fails fast at runtime.
Five idiomatic projections today. Five more queued.
TypeScript
@vadyl/sdk via npm. Internal runtime SDK for in-process authoring. MonacoContractProjectionBridge re-injects extraLibs on contract stamp advance — types stay current as your model evolves.
Python
vadyl via pip. Async-first, dataclass-friendly. Same canonical operations. Same auth. Same SDK manifest with version provenance.
C#
Vadyl.Client via NuGet. Strongly-typed, .NET-idiomatic. Async / Task throughout. Manifest embedded as a static class for design-time inspection.
Go
go.vadyl.dev/sdk. Generated structs, idiomatic context.Context, error returns. No reflection on the hot path.
Rust
vadyl crate. Async / Tokio. Strongly-typed Result returns, derived serde where appropriate.
Future peers
Java (Maven), Ruby (Gem), Kotlin (Maven), Swift (SPM), PHP (Composer) — all peer projections from the same canonical contract backbone.
Drives every projection
TS · Python · C# · Go · Rust
Embedded version provenance
Compiled, not authored
One product model. Compile every API.
Define the entity, workflow, permission, or agent action once. Vadyl emits REST, GraphQL, gRPC, OpenAPI, MCP, and typed SDKs in five languages. The product model is the source of truth — every client tracks it.