CoreModelsCoreModels

Protocol Buffers

Carry reserved field numbers with the meaning, not only with the .proto file.

Quickstart · Get it working.
Ten Minutes With proto3: Your First CoreModels Transform
You have a `.proto` file. It is the truth for a service, and now somebody outside that service needs the same shape - as JSON Schema for a validation step, as a data contract for a review, as a table for analytics. The usual answer is to retype it. This article replaces the retyping with one HTTP call, and then spends most of its length on the part that matters more: reading what the conversion cost you.
API · Drive it from the Integration API.
The Transform API for proto3: Four Routes, Both Directions
Most schema converters are one-way. You can get *out* of the format or *into* it, rarely both, and the documentation usually leaves you to discover which by trying. So let us answer the direction question for Protocol Buffers first and in one sentence: **proto3 decodes and encodes.** The key `protobuf` (alias `proto`) appears in both the decode list and the encode list, so it is valid as a source and as a target on every route below.
MCP · Drive it from an agent.
Handing proto3 to an Agent: transform_schema over MCP
"Take our telemetry `.proto` and give me the Postgres table for it - and tell me what we lose."
Automation · Put it in CI.
Deterministic proto3 Pipelines: The Plan Is the Artifact
A conversion you run once is a favor. A conversion you run on every commit is infrastructure, and infrastructure needs two properties that one-off tooling never has to prove: the second run must produce the same bytes as the first, and when the input changes in a way the conversion cannot honor, the pipeline must stop rather than quietly produce something different.
Deep dive · Understand what it does.
Inside the proto3 Coder: The IR Mapping, the Extras, and Every Lossiness Record
Proto3 has fifteen scalar types. A neutral intermediate representation that also hosts JSON Schema, SQL, Avro, LinkML, OWL, and half a dozen other formats cannot afford fifteen distinct numeric primitives, and any tool that claims otherwise is hiding something. The arithmetic settles the question up front: some proto3 facts map structurally, some ride alongside as preserved detail, and some are declared as loss. This is the complete account, in that order.

Why this matters

The case for Protocol Buffers — the problem it fixes and what changes when it is fixed — is on coremodels.io.

Read the Protocol Buffers guides →