<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ferguson-gpt-00" category="exp" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="GPT">GPT: Generic Protocol Type</title>

    <author initials="M." surname="Ferguson" fullname="Mark Ferguson">
      <organization></organization>
      <address>
        <email>mrxdotai@gmail.com</email>
      </address>
    </author>

    <date year="2026" month="August" day="04"/>

    <area>Applications</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>json schema</keyword> <keyword>agents</keyword> <keyword>structured output</keyword> <keyword>hypermedia</keyword>

    <abstract>


<?line 31?>

<t>This document specifies GPT (Generic Protocol Type), a convention by which an
HTTP address publishes the JSON Schema of the action it accepts, and accepts
that action as a request body validated against the same schema. A client
retrieves the schema at the moment of contact, produces a conforming value, and
submits it unchanged. No client library, prior registration, or separate
description of the capability is required. The schema serves as both the
published description and the server-side check, so the two cannot diverge.</t>



    </abstract>



  </front>

  <middle>


<?line 41?>

<section anchor="introduction"><name>Introduction</name>

<t>An HTTP address that expects structured input generally describes that input
somewhere other than in the response itself: in documentation, in a client
library, in a tool definition supplied to a language model in advance, or in a
registry retrieved separately. Each of those descriptions is maintained apart
from the code that validates incoming requests, and can therefore disagree with
it.</t>

<t>GPT removes the separate description. An address returns the JSON Schema
<xref target="JSON-SCHEMA"/> of what it accepts as part of its ordinary representation. A
client — commonly a language model with constrained-decoding support, but the
protocol does not require one — produces a value conforming to that schema and
submits it as the request body. The server validates against the same schema
value it published.</t>

<t>This document specifies the wire behavior only. It does not specify what any
particular address does with an accepted body.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="non-goals"><name>Non-Goals</name>

<t>The following are outside the scope of this version, and are listed so that
their absence is not mistaken for oversight:</t>

<t><list style="symbols">
  <t>Multi-capability discovery. One address publishes one schema.</t>
  <t>Transport other than HTTP <xref target="RFC9110"/>. The design does not depend on HTTP,
but only HTTP behavior is specified here.</t>
  <t>Authentication and authorization. See <xref target="security-considerations"/>.</t>
  <t>Session or conversation state beyond what <xref target="arrival-response"/> returns.</t>
</list></t>

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>Address:</dt>
  <dd>
    <t>An HTTP or HTTPS URI implementing this document.</t>
  </dd>
  <dt>Form:</dt>
  <dd>
    <t>The JSON Schema an address publishes, carried in the member <spanx style="verb">s</spanx>. It is both
the description of what may be submitted and the check applied to what is
submitted.</t>
  </dd>
  <dt>Act:</dt>
  <dd>
    <t>A single POST whose body validates against the form.</t>
  </dd>
  <dt>Actor:</dt>
  <dd>
    <t>Whatever produced the body. This protocol does not distinguish a language
model, a program, or a person composing JSON by hand.</t>
  </dd>
</dl>

</section>
<section anchor="arrival"><name>Arrival</name>

<section anchor="request"><name>Request</name>

<t>A client retrieves the form with an ordinary GET:</t>

<figure><artwork><![CDATA[
GET / HTTP/1.1
Host: example.com
]]></artwork></figure>

<t>No request header is required. An address <bcp14>MUST NOT</bcp14> require a header, query
parameter, cookie, or prior request in order to return its form.</t>

</section>
<section anchor="arrival-response"><name>Response</name>

<t>The response status is 200 with a <spanx style="verb">Content-Type</spanx> of <spanx style="verb">application/json</spanx>. The
body <bcp14>MUST</bcp14> be a JSON object <xref target="RFC8259"/> containing these members:</t>

<texttable title="Members of the arrival response">
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">p</spanx></c>
      <c>string</c>
      <c>System context: what this address is, and what to do</c>
      <c><spanx style="verb">m</spanx></c>
      <c>array</c>
      <c>Prior messages, each an object with <spanx style="verb">role</spanx> and <spanx style="verb">content</spanx></c>
      <c><spanx style="verb">s</spanx></c>
      <c>object</c>
      <c>The form: a JSON Schema (see <xref target="the-form"/>)</c>
</texttable>

<t>The members <spanx style="verb">p</spanx> and <spanx style="verb">m</spanx> are context for the actor and carry no normative
weight. The member <spanx style="verb">s</spanx> is normative: it is the sole statement of what the
address accepts.</t>

<t>An address <bcp14>MAY</bcp14> include additional members. A client <bcp14>MUST</bcp14> ignore members it does
not recognize.</t>

<t>An address <bcp14>MAY</bcp14> include a <spanx style="verb">GPT-Type</spanx> response header field naming the kind of
address it is. This is advisory; a client <bcp14>MUST NOT</bcp14> depend on it, as <spanx style="verb">s</spanx> already
states everything the address accepts.</t>

<t>The response <bcp14>MUST NOT</bcp14> vary based on whether the client has contacted the
address before.</t>

</section>
<section anchor="representation-for-human-readers"><name>Representation for Human Readers</name>

<t>An address <bcp14>MAY</bcp14> return a different representation when the request carries an
<spanx style="verb">Accept</spanx> header field including <spanx style="verb">text/html</spanx>. That representation is not part of
this protocol and <bcp14>MUST NOT</bcp14> be the only means of obtaining the form. A request
with no <spanx style="verb">Accept</spanx> header field, or one not including <spanx style="verb">text/html</spanx>, <bcp14>MUST</bcp14> receive
the response described in <xref target="arrival-response"/>.</t>

</section>
</section>
<section anchor="the-form"><name>The Form</name>

<t>The value of <spanx style="verb">s</spanx> <bcp14>MUST</bcp14> be a valid JSON Schema describing a single JSON value:
the body of an act.</t>

<section anchor="vocabulary"><name>Vocabulary</name>

<t>An address <bcp14>SHOULD</bcp14> restrict its schema to keywords that constrain the shape of a
value, and <bcp14>SHOULD NOT</bcp14> depend on keywords whose omission by a validator would
widen what is accepted.</t>

<t>The reference implementation uses:</t>

<figure><artwork><![CDATA[
type  properties  required  additionalProperties  const  enum
minLength  maxLength  minItems  maxItems  items  description
$defs  $ref  anyOf
]]></artwork></figure>

<t>An address <bcp14>SHOULD</bcp14> use <spanx style="verb">anyOf</spanx> in preference to <spanx style="verb">oneOf</spanx>. Both express a union of
alternatives; some constrained-decoding implementations reject <spanx style="verb">oneOf</spanx> outright,
and where the alternatives are disjoint the distinction does not affect which
values validate.</t>

</section>
<section anchor="bounded-recursion"><name>Bounded Recursion</name>

<t>A form <bcp14>MAY</bcp14> describe a recursive structure. Where it does, the recursion <bcp14>SHOULD</bcp14>
be bounded by the schema itself rather than by a check performed at runtime.</t>

<t>A self-referencing definition such as:</t>

<figure><artwork><![CDATA[
node = { content: [ node ] }
]]></artwork></figure>

<t>is unbounded. The effective depth then becomes a property of the actor's
sampling behavior rather than of the published grammar, and differs between
actors.</t>

<t>Unrolling the definitions bounds depth within the document:</t>

<figure><artwork><![CDATA[
node1 = anyOf [ leaf, { content: [ node2 ] } ]
node2 = anyOf [ leaf, { content: [ node3 ] } ]
...
nodeN = anyOf [ leaf ]
]]></artwork></figure>

<t>The final level omits the recursive alternative, so no conforming value exceeds
depth N. The published form is the limit.</t>

</section>
<section anchor="description"><name>Description</name>

<t>The <spanx style="verb">description</spanx> keyword, wherever it appears, is context for the actor and
carries no normative weight. A server <bcp14>MUST NOT</bcp14> rely on an actor having read it.</t>

</section>
</section>
<section anchor="the-act"><name>The Act</name>

<section anchor="request-1"><name>Request</name>

<figure><artwork><![CDATA[
POST / HTTP/1.1
Host: example.com
Content-Type: application/json

<a JSON value conforming to s>
]]></artwork></figure>

<t>The body <bcp14>MUST</bcp14> be exactly the value the actor produced. Intermediaries <bcp14>MUST NOT</bcp14>
reshape, re-serialize, or wrap it.</t>

</section>
<section anchor="verification"><name>Verification</name>

<t>Before acting on a body, a server <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>Reject bodies exceeding an implementation-defined maximum size.</t>
  <t>Parse strictly. The parser <bcp14>MUST</bcp14> reject bytes following the JSON value, and
<bcp14>MUST</bcp14> reject duplicate object member names at any depth. Both are ambiguous
at a trust boundary, and permissive parsers disagree about which duplicate
value prevails.</t>
  <t>Validate the body against the same value of <spanx style="verb">s</spanx> returned in
<xref target="arrival-response"/> — not a copy of it, and not a subset of it.</t>
  <t>Fail closed on any schema keyword the validator does not implement. A form
containing an unrecognized constraint <bcp14>MUST NOT</bcp14> be treated as though that
constraint were absent.</t>
</list></t>

<t>Requirement 3 is the substance of this protocol. A description that can diverge
from its enforcement is the condition being eliminated.</t>

</section>
<section anchor="response"><name>Response</name>

<t>On success, the server returns 200 with <spanx style="verb">Content-Type: application/json</spanx> and a
body describing the consequence of the act. The shape of that body is not
specified here.</t>

<t>On failure, the server <bcp14>SHOULD</bcp14> return 204 with no body, and <bcp14>SHOULD NOT</bcp14> indicate
which constraint rejected the body. An address that reports why a body was
rejected assists an unauthorized actor in constructing one that is accepted.</t>

</section>
<section anchor="idempotency"><name>Idempotency</name>

<t>Acts are not idempotent unless a particular address specifies otherwise. This
document defines no retry semantics.</t>

</section>
</section>
<section anchor="actor-identity"><name>Actor Identity</name>

<t>An address <bcp14>MAY</bcp14> read a <spanx style="verb">GPT-Actor</spanx> request header field in order to record how a
body was produced. It carries no authority: it is unauthenticated and
self-asserted, and <bcp14>MUST NOT</bcp14> be used to gate access.</t>

<t>A server <bcp14>MUST NOT</bcp14> infer actor identity from the body. Fields naming a speaker,
where a form defines them, are content.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="constrained-decoding-is-not-enforcement"><name>Constrained Decoding Is Not Enforcement</name>

<t>That an actor's output conforms to a schema is a property of how the output was
generated, not a property of the request. Some implementations supply a schema
to a language model as a tool definition the model is instructed but not
compelled to use.</t>

<t>A server <bcp14>MUST</bcp14> treat every body as untrusted regardless of how it was produced.
Generation-time constraint is a strong prior on well-formedness and nothing
more.</t>

</section>
<section anchor="the-form-is-the-attack-surface"><name>The Form Is the Attack Surface</name>

<t>Everything an actor can cause at an address is the set of values its form
admits. That set <bcp14>SHOULD</bcp14> be as small as the address can tolerate: bounded string
lengths, bounded array sizes, closed enumerations, and
<spanx style="verb">additionalProperties: false</spanx> on every object.</t>

<t>An address publishing a permissive form has published a permissive capability,
whatever it does with the body afterward.</t>

</section>
<section anchor="no-separate-description-of-behavior"><name>No Separate Description of Behavior</name>

<t>This protocol provides no channel by which a server describes what it will do
that is separate from the form. This is deliberate. A prose description of a
capability is unverifiable by the actor and unenforced by the server, and its
presence invites reliance on a statement nothing checks.</t>

</section>
<section anchor="denial-of-service"><name>Denial of Service</name>

<t>A form is retrieved before every act, so an address serves its schema to
unauthenticated clients at whatever rate they request it. Implementations
<bcp14>SHOULD</bcp14> serve a precomputed representation and <bcp14>SHOULD</bcp14> apply rate limiting
independent of this protocol.</t>

</section>
</section>
<section anchor="relationship-to-other-work"><name>Relationship to Other Work</name>

<t>Tool calling and tool registries supply a language model with definitions in
advance, from the client side. GPT supplies them from the address at the moment
of contact, and the same definition serves as the server's check. The tradeoff
is that a registry can present many capabilities at once, where a GPT address
presents one.</t>

<t>Proactive content negotiation <xref target="RFC9110"/> is used as specified, rather than
maintaining separate paths for human and machine representations that can
disagree about what an address offers.</t>

<t>GPT resembles hypermedia controls in that a response states what is possible
next. It differs in that the statement is directly executable by the actor: a
grammar to generate within, rather than links an actor must be programmed to
interpret.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

<t>The header fields <spanx style="verb">GPT-Type</spanx> and <spanx style="verb">GPT-Actor</spanx> are used by the reference
implementation but are not registered by this document. A future version may
request registration in the "Hypertext Transfer Protocol (HTTP) Field Name
Registry".</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>


<reference anchor="JSON-SCHEMA" target="https://json-schema.org/draft/2020-12/json-schema-core.html">
  <front>
    <title>JSON Schema: A Media Type for Describing JSON Documents</title>
    <author >
      <organization></organization>
    </author>
    <date year="2022"/>
  </front>
</reference>


<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>




    </references>

</references>


<?line 339?>

<section anchor="reference-implementation"><name>Reference Implementation</name>

<t>A running implementation is available at <spanx style="verb">https://appgp.tv</spanx>. Its form describes
a tree of text and styled spans.</t>

<t>Retrieving the form and submitting an act, using a language model runtime with
native JSON Schema support:</t>

<figure><artwork><![CDATA[
x=$(curl -L appgp.tv)
claude -p --system-prompt "$(jq -r .p<<<$x)" \
          --json-schema  "$(jq -c .s<<<$x)" \
          "$(jq -c .m<<<$x)" | curl -L appgp.tv -d@-
]]></artwork></figure>

<t>The same address with a different runtime:</t>

<figure><artwork><![CDATA[
x=$(curl -L appgp.tv)
jq -c .m<<<$x | codex e --skip-git-repo-check \
  --output-schema <(jq -c .s<<<$x) "$(jq -r .p<<<$x)" \
  | curl -L appgp.tv -d@-
]]></artwork></figure>

<t>And with a locally hosted model:</t>

<figure><artwork><![CDATA[
curl -L appgp.tv | jq '{model:"qwen3.5:9b",
  messages:([{role:"system",content:.p}]+.m),
  stream:false, format:.s}' \
  | curl localhost:11434/api/chat -d@- \
  | jq -r .message.content | curl -L appgp.tv -d@-
]]></artwork></figure>

<t>No client library is installed in any of the three cases, and the address is
unaware which runtime contacted it.</t>

</section>
<section anchor="open-questions"><name>Open Questions</name>

<t>The following are unresolved in this version.</t>

<dl>
  <dt>Composition:</dt>
  <dd>
    <t>Whether an address should be able to name other addresses, and if so whether
as data within the form or as a protocol-level member. Naming them within the
form keeps the protocol to a single primitive but gives an actor no means of
reasoning about the graph before entering it.</t>
  </dd>
  <dt>Form Change:</dt>
  <dd>
    <t>A form may change between arrival and act. Nothing in this document detects
that. An entity-tag on the form, echoed by the act, would — at the cost of a
required header field.</t>
  </dd>
  <dt>Failure Reporting:</dt>
  <dd>
    <t>Returning 204 with no explanation is appropriate for a public address and
unhelpful for one under development. This document provides no means of
distinguishing the two.</t>
  </dd>
  <dt>Long-Running Acts:</dt>
  <dd>
    <t>Acts are a single request and response. Progressive results and acts that
outlive a request are unaddressed.</t>
  </dd>
</dl>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA5Vba5IbN5L+j1Ng246w5GVRalkTa3Nkz7QetjQhqTXqticc
XscSrALJctfLBVRTdEuOPcQeYM+yR9mT7JeZQD3ItjZGP9xkEUAl8vHllwk4
SRLlc1/YhT757s3lQn9nK9vmqX7T1r5O60Jf7ht7osxq1dprGXSisjqtTIk5
WWvWPlnbdtO5uko2jU/u31ep8XZTt/uFtu8apfKmXWjfds4/uH//q/sPlGmt
WeizpilyDM3ryqld3V5t2rprFvpFldnG4j+V1xfdqsydwxB1ZfcYlC30T7/g
VdqlW1uamTYbjHMz7fCC1HetzXTd+abzM72F5G1ps9z8rJTzpsr+wxR1BbH3
1qkmx1LYIqbWrW/tmhbZl/QBw03nt3W7UDpRGv/yyi30q7n+NuyUH4oKXpn2
avoccuXFQpftu6z2Jv/rhr7P07pUqqrbEju+tlhZv/32yVenp/fp498uzl8n
F0+eP3t1tuA1ok3oB33Be4XG9CvaDZtEr+tWP7UubfNVXm14Bf20TruS9HEi
i5h2Y/1Cb71v3OLePVJcIoqb1+3mHlvv3oP7D+4npw/GvyZp3dr51pcFr5PB
nguNcQ9gzGp9sIcvH/zpq4VSSZJos4IZTOqVutzmTmdBHO0am+br3DoN99F3
bvWxu7ClTuvqGhNgb73a6902T7faVOr55eUbbbKstc7pplsVudtiMb+1eqQg
Xa/5EQSgBXKPT6ltyDtg+/hF+a3xcYxxeGlrf+2s83pVZ3t9bYqc9ovxGwOz
e17SwdTB5eYwQ1rkkFK11re5vQ6SyM/ayIyy5p1DJOzJ43Uz3bR11qXWyT5J
jWQ4vLCzLKFy5O3ekeRdlW5NtbHZXL+uw/t0ka9a0+5ppRzWb+0mJ33TTmYa
D5xtDL5albFfNLzFoJTUNGaVF7nfa1iGtpy3tPrlILmzLe0FOlnVfkuzVNR1
psdLkjZ5xzShTVyeYf2tTa8olvgXv4PQpqpqrzN4CtxwLh5S5llWWKU+QZh7
1getqNRZpSdGZiMBPWwKfYxiO68Q2npDDmSKYh/EWtkwg39WDrrfbW1rNfZh
W/oJ7lCxZFi9AeBYKNnZYr2g59FPgybxxEQT9yrnh76Gs2Z2nVc5K8J1hGEQ
y9f4tYDBOuARbJ/Zgmdk16ZKLRuHvqpgsr2OrpP1Riv2c/3MwN/ZYDUkHKnc
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
q5sFCtsVMYGvTxiB+P7O+dPzufo/qcYfliA1AAA=

-->

</rfc>

