<?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.29 (Ruby 3.4.7) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-curtis-myterms-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="MCNP">MyTerms Contract Negotiation Protocol (MCNP): Human and machine-readable agreements</title>

    <author fullname="Benjamin Curtis">
      <organization>MyTerms</organization>
      <address>
        <email>ietf@nowsci.com</email>
      </address>
    </author>

    <date year="2026" month="January" day="26"/>

    <area>AREA</area>
    <workgroup>WG Working Group</workgroup>
    <keyword>ethics</keyword> <keyword>automation</keyword> <keyword>machine translation</keyword> <keyword>contractual agreements</keyword>

    <abstract>


<?line 58?>

<t>This document covers the technical requirements of contractual interactions and agreements between individuals and the entities they engage on a network as defined in IEEE7012. It describes how individuals, acting as first parties, can proffer their privacy requirements as contractual terms and arrive at agreements recorded and kept by both sides. This includes the hosting format for contracts, negotiation of contracts, signing of contracts, and auditing of contracts.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://codeberg.org/myterms/ietf/src/branch/main/draft-curtis-myterms-00.xml"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-curtis-myterms/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:WG@example.com"/>),
        which is archived at <eref target="https://example.com/WG"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://codeberg.org/myterms/ietf"/>.</t>
    </note>


  </front>

  <middle>


<?line 62?>

<section anchor="introduction"><name>Introduction</name>

<section anchor="purposes-of-myterms"><name>Purposes of MyTerms</name>

<t>The purpose of the <xref target="IEEE7012"/> standard, otherwise known as MyTerms, is to provide individuals with means to proffer their own terms respecting personal privacy in ways that can be read, acknowledged and agreed to by machines operated by others in the networked world. In a more formal sense, the purpose of the standard is to enable individuals to operate as first parties in agreements with others, mostly organizations, operating as second parties.</t>

<t>In this methodology, agreements shall be chosen from a registry of standard-form agreements in a roster kept by an independent and neutral non-business entity. Computing devices and software performing as agents for both first and second parties shall engage using the protocol defined in this document. The first party shall point to a preferred agreement, or a set of agreements, from which the second party shall accept one. Party-to-party negotiations over agreements in any of these contracts or other agreements are outside the scope of this standard. If both parties agree, the chosen contract or agreement shall be signed electronically by both parties' agents, and a matching record shall be kept in a way that can be retrieved, audited, or disputed, by either side if necessary, at some later time.</t>

</section>
<section anchor="definitions"><name>Definitions</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>

<t>A "PERSON AGENT" is defined as any system, such as a web browser, mobile application, AI/MCP agent, or any other tooling, that negotiates MyTerms agreements on behalf of a consuming party, otherwise known as the first party in <xref target="IEEE7012"/>. An "ENTITY AGENT" is defined as any system, such as a web server, operating system, AI/MCP agent, or any other tooling, that negotiates MyTerms agreements on behalf of a providing party, otherwise known as the second party in <xref target="IEEE7012"/>.</t>

</section>
</section>
<section anchor="hosting-agreements"><name>Hosting agreements</name>

<section anchor="relationships-between-agreements"><name>Relationships between agreements</name>

<t>Agreements that exist in the MyTerms ecosystem MAY have direct relationships with one another. For instance, one agreement may contain a set of terms that define what a system can do with a person's personal data, and another agreement may contain that same set, plus additional terms.</t>

<t>When agreements contain overlapping terms, where one agreement is more or less restrictive than another, these agreements MUST be correlated and ordered by an identifier to indicate their relationship. This correlation MUST be in order of most restrictive (commonly in the interest of the person) to least restrictive (commonly in the interest of the entity). This correlation MAY be in a tree structure, where many agreements are related to one other agreement.</t>

<t>The following diagram illustrates how these agreements SHOULD be organized:</t>

<figure><artwork><![CDATA[
                             Most restrictive
                             ----------------

                          +-------------------+
                          | Agreement 1 (A01) |   Level 1 (L01)
                          +-------------------+
                                    |
                           +--------+--------+
                           |        |        |
                        +-----+  +-----+  +-----+
                        | A02 |  | A03 |  | A04 |          L02
                        +-----+  +-----+  +-----+
                                             |
                                        +----+----+
                                        |         |
                                     +-----+   +-----+
                                     | A05 |   | A06 |     L03
                                     +-----+   +-----+

                            -----------------
                            Least restrictive
]]></artwork></figure>

<t>In the above example, Agreement 5 (A05) allows an entity to do more with the person's data than Agreement 4 (A04), which in turns allows the entity to do more with the person's data than Agreement 1 (A01). In addition, Agreement 5 (A05) and Agreement 6 (A06) are similarly restrictive, but have different terms.</t>

<t>Each level of restrictiveness is also defined as a relationship. This allows users to select an entire level of restrictiveness that they are comfortable with in the negotiation of agreements.</t>

<section anchor="agreement-types"><name>Agreement types</name>

<t>There are two trees of agreements in MyTerms:</t>

<t><list style="symbols">
  <t><strong>Relationship agreements:</strong> Agreements that pertain to the overall relationship between the PERSON and the ENTITY, such as for service delivery or data portability.</t>
  <t><strong>Personal Data Contribution agreements:</strong> Agreements that pertain to one-time data use or exchange.</t>
</list></t>

<t>Depending on the interaction type between the PERSON AGENT and ENTITY AGENT, a specific type, or set of a type, of agreements MAY be signed.</t>

</section>
</section>
<section anchor="mitigating-pervasive-monitoring"><name>Mitigating Pervasive Monitoring</name>

<t>As per <xref target="RFC7258"/>, to mitigate Pervasive Monitoring (PM) and thus decrease the ability of entities to leverage MyTerms user preferences for fingerprinting, systems hosting agreements with continuous proposal of agreements (see below) MUST provide a set of standard profile identifier codes to PERSON AGENTs that MUST be used to define user agreement selections at the system level. These codes MUST all be the same length, either by natural selection of characters or via padding, to ensure the length of identifiers are also irrelevant for fingerprinting.</t>

<t>Codes MUST exist for every representative combination of agreements with those agreements that are more restrictive. For instance, using the diagram in the above section:</t>

<texttable>
      <ttcol align='left'>Standard Profile Identifier Code</ttcol>
      <ttcol align='left'>User selections</ttcol>
      <c>MT01</c>
      <c>L01 or A01</c>
      <c>MT02</c>
      <c>A02; or L01 and A02</c>
      <c>MT03</c>
      <c>A03; or L01 and A03</c>
      <c>MT04</c>
      <c>A04; or L01 and A04</c>
      <c>MT05</c>
      <c>A02 and A03; including L01</c>
      <c>MT06</c>
      <c>A02 and A04; including L01</c>
      <c>MT07</c>
      <c>A03 and A04; including L01</c>
      <c>MT08</c>
      <c>L01 and L02</c>
      <c>MT09</c>
      <c>A05; including A04 and L01</c>
      <c>MT10</c>
      <c>A06; including A04 and L01</c>
      <c>MT12</c>
      <c>A05 and L02; including L01</c>
      <c>MT13</c>
      <c>A06 and L02; including L01</c>
      <c>MT14</c>
      <c>L03; including L01 and A4</c>
      <c>MT15</c>
      <c>L03; including L01 and L02</c>
</texttable>

<t>This reduces possible monitoring by including only 15 options presented to websites and agents, spread across the population, vs 63 if each individual agreement could be provided as an identifier, or 20 if just a hierarchy is utilized. As agreement counts grow, using coding will further reduce the ratio of unique values to the population.</t>

<t>These codes are not intended for use with ENTITY AGENTs, where the least restrictive agreement is required, but no fingerprinting is occurring. The overarching hierarchy of agreement codes are OPTIONAL for on-demand proposal of agreements, as an action has been taken on behalf of the user to share information with the ENTITY AGENT at that point.</t>

</section>
<section anchor="ensuring-tamper-proof-agreements"><name>Ensuring tamper-proof agreements</name>

<t>To ensure hosted agreements are tamper-proof, meaning that when a party signs an agreement, there is proof that the content of the agreement has not been altered since the signature took place, agreements MUST be hosted in Markdown (MD) format with a hash of the content in the URL.</t>

<t>Agreements MUST also be hosted in a web-browser friendly format, for instance using Markdown to HTML conversion tools. Web-browser friendly versions MUST contain links to the raw Markdown versions and MUST contain links to the machine readable versions.</t>

<t>URL formats for web-browser friendly agreements SHOULD be in the format of:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/a/<hash>
]]></artwork></figure>

<t>URL formats for Markdown agreements SHOULD be in the format of:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/a/<hash>/md
]]></artwork></figure>

<t>URL formats for machine readable agreements SHOULD be in the format of:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/a/<hash>/json
]]></artwork></figure>

</section>
<section anchor="machine-readable-agreements"><name>Machine readable agreements</name>

<t>Machine readable agreements MUST be JSON-LD, as detailed in the <xref target="JSONLD"/> W3C recommendation. The JSON-LD MUST contain a context field with a URL to a JSON-LD format of definitions, and that context URL MUST include a hash of the content of the JSON as it is presented from the server to ensure context cannot be altered after signing. When a context is changed, the original document MUST remain hosted for past lookups.</t>

<t>The format of the JSON-LD MUST be:</t>

<figure><artwork><![CDATA[
{
  "@context": "<context url>/myterms-v<version>.<hash>.jsonld",
  "version": <machine readable agreement version>,
  "parent": "<link to web-browser friendly agreement>",
  "agreementId": "<UUID representing this agreement>",
  "created": <epoch time>,
  "ids": [
    "<DID id>"
  ],
  "purposes": [
    "<purpose>"
  ],
  "prohibitions": [
    "<prohibition>"
  ],
  "validRoles": [
    "<role>"
  ]
}
]]></artwork></figure>

<t>Machine readable agreements MUST support signing via DIDs as per the <xref target="DID"/> W3C recommendation.</t>

<t>DID ids within the <spanx style="verb">ids</spanx> array of the agreement MUST include the ENTITY AGENT's DID id, and they MUST sign the agreement before it is considered valid.</t>

<t>The <spanx style="verb">purposes</spanx> array MUST contain a representation of any expressly allowed actions within the agreement content. The <spanx style="verb">prohibitions</spanx> array MUST contain a representation of any expressly prohibited actions within the agreement content. The <spanx style="verb">validRoles</spanx> array MUST contain a list of roles or parties as defined within the agreement content, such as that of entity, user, and/or third-party.</t>

<t>Machine readable agreements MAY be signed by multiple PERSON AGENTs, however agreement UUIDs MUST be unique per unique JSON record.</t>

</section>
<section anchor="retrieving-available-agreements"><name>Retrieving available agreements</name>

<t>When a PERSON AGENT or ENTITY AGENT wishes to retrieve a list of codes and their corresponding agreements from the agreement hosting entity, a publicly-accessible API endpoint SHOULD be provided for accessing this information.</t>

<t>The URL format for the API endpoint to set preferences MAY be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/get-agreements
]]></artwork></figure>

<t>Retrieving agreements MUST be completed via a GET, and the response MUST be in the format of:</t>

<figure><artwork><![CDATA[
{
  "levels": [
    {
      "title": "<level title>",
      "code": "<level code>",
      "agreements": [
        {
          "title": "<agreement title>",
          "code": "<agreement code>",
          "type": "<relationship|data_contribution>"
          "url": "https://<domain>.<tld>/a/<hash>",
          "md_url": "https://<domain>.<tld>/a/<hash>/md",
          "expiredTs": "<null|epoch time>"
        }
      ]
    }
  ],
  "codes": [
    {
      "code": "<standard profile identifier code>",
      "agreements": [
        "<agreement code>"
      ]
    }
  ]
}
]]></artwork></figure>

<t>When an agreement is rotated out for a new version, that agreement MUST continue to remain available for previous lookups, and the <spanx style="verb">expiredTs</spanx> key on that agreement MUST be changed from null to the Epoch time at which the agreement was replaced with the new version.</t>

<t>Codes MUST NOT be reused between agreements, and rotating an agreement MUST also rotate the level code.</t>

</section>
<section anchor="configuring-agreement-preferences"><name>Configuring agreement preferences</name>

<t>In the above diagram, a user with a role of PERSON AGENT MUST be able to select a set of individual agreements they would agree to during the negotiation. When the user is going to be interfacing with a PERSON AGENT, and that user selects any agreement level that is less restrictive than another, the system MUST assume that any level below that is acceptable, and SHOULD auto-select those options for the user. The system SHOULD default to the most restrictive agreement until the user changes their preference. A default MUST NOT assume the user has agreed to that selection.</t>

<t>For example:</t>

<t><list style="symbols">
  <t>If a PERSON AGENT-based user selects A04
  <list style="symbols">
      <t>The system should select A04 and A01</t>
    </list></t>
  <t>If a PERSON AGENT-based user selects A04 and A06
  <list style="symbols">
      <t>The system should select A04, A06, and A01</t>
    </list></t>
</list></t>

<t>When a PERSON AGENT wishes to set the code that represents the preferences that have been selected by the user, an API endpoint SHOULD be provided for saving this information.</t>

<t>The URL format for the API endpoint to set preferences MAY be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/agreements
]]></artwork></figure>

<t>Setting or updating agreement preferences SHOULD be completed via a JSON POST, and the POST body SHOULD be in the format of:</t>

<figure><artwork><![CDATA[
{
  "agreements": [
    "<agreement code>"
  ]
}
]]></artwork></figure>

<t>Multiple agreement codes can be included, and the system should associate those selections to the appropriate standard profile identifier code.</t>

<t>Additional information MAY be included in the JSON content.</t>

<t>Authentication MUST be used for this endpoint, and SHOULD follow standard best-practices for web authentication.</t>

</section>
<section anchor="retrieving-agreement-preferences"><name>Retrieving agreement preferences</name>

<t>When a PERSON AGENT wishes to retrieve the code that represents the preferences that have been selected from the agreement hosting entity, an API endpoint MUST be provided for accessing this information.</t>

<t>The URL format for the API endpoint to set preferences MAY be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/agreements
]]></artwork></figure>

<t>Retrieving agreement preferences MUST be completed via a GET. The response MUST be in the format of:</t>

<figure><artwork><![CDATA[
{
  "code": "<standard profile identifier code|null>",
  "agreements": [
    "<agreement code>"
  ]
}
]]></artwork></figure>

<t>If the role of the user who selected agreements is of a PERSON AGENT, the <spanx style="verb">code</spanx> field MUST contain the standard profile identifier code to be sent for the negotiation.</t>

<t>Authentication MUST be used for this endpoint, and SHOULD follow standard best-practices for web authentication.</t>

</section>
</section>
<section anchor="agreement-negotiation-mechanisms"><name>Agreement negotiation mechanisms</name>

<section anchor="client-preference-delivery"><name>Client preference delivery</name>

<section anchor="on-demand-proposal-of-agreements"><name>On-demand proposal of agreements</name>

<t>In this method, the PERSON AGENT to ENTITY AGENT negotiation occurs over HTTP/S via the exchange of HTTP headers, where the ENTITY AGENT delivers and endpoint request to the PERSON AGENT, and the user must approve delivery before hand. This eliminates any sources of pervasive monitoring as clients can ignore the request from a server.</t>

<t>First, when a PERSON AGENT makes a request to a particular web page or service endpoint that is MyTerms enabled, the ENTITY AGENT will return a response HTTP header of a MyTerms request endpoint:</t>

<figure><artwork><![CDATA[
X-MyTerms-Delivery-Endpoint: <entity deliver agreement endpoint url>
]]></artwork></figure>

<t>The URL format for the entity endpoint URL MAY be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/deliver
]]></artwork></figure>

<t>When encountering a MyTerms response header request, a PERSON AGENT MUST alert the user to the request for them to allow or deny, unless the user has previously approved that PERSON AGENT to accept all MyTerms requests from that domain. A system MUST NOT allow users to accept all MyTerms requests for all domains. This alert MUST contain full host name contained within the header, including domain, top level domain, and subdomain if one exists.</t>

<t>Once approved, the PERSON AGENT uses the <spanx style="verb">agreements_endpoint</spanx> to retrieve the user's agreements via a GET, and delivers the response from that endpoint via POST to the entity deliver agreements endpoint url obtained from the <spanx style="verb">X-MyTerms-Delivery-Endpoint</spanx> header.</t>

</section>
<section anchor="continuous-proposal-of-agreement"><name>Continuous proposal of agreement</name>

<t>In this method, the PERSON AGENT to ENTITY AGENT negotiation occurs also over HTTP/S via the exchange of HTTP headers, but this time on every request. This method SHOULD be leveraged when PERSON AGENTs are adopting this standard and do not have the capabilities or process abilities to support on-demand agreement delivery. Standard profile identifier codes are used to reduce the potential of Pervasive Monitoring.</t>

<t>First, a PERSON AGENT sets an HTTP header when making a request to a particular web page or service endpoint:</t>

<figure><artwork><![CDATA[
X-MyTerms: <standard profile identifier code>
]]></artwork></figure>

<t>Using the table above, if a user selected options corresponding with code MT10:</t>

<figure><artwork><![CDATA[
X-MyTerms: MT10
]]></artwork></figure>

</section>
</section>
<section anchor="agreement-negotiation-algorithm"><name>Agreement negotiation algorithm</name>

<t>Once the ENTITY AGENT receives the acceptable agreement selections from the PERSON AGENT, it is the ENTITY AGENT's job to select the appropriate one. At this point the ENTITY AGENT should compare it's acceptable agreements with those of the PERSON AGENT, and select the most restrictive agreement that overlaps.</t>

<t>For example, if a PERSON AGENT provides a code of MT07, and the ENTITY AGENT accepts A02, A03, and A04, the following agreements would be available to compare:</t>

<texttable>
      <ttcol align='left'>Client code (MT07)</ttcol>
      <ttcol align='left'>Server agreements</ttcol>
      <c>A01</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>A02</c>
      <c><strong>A03</strong></c>
      <c><strong>A03</strong></c>
      <c>A04</c>
      <c>A04</c>
</texttable>

<t>In the above example, the ENTITY AGENT MUST default to A03, the most restrictive agreement, and provide that option to the PERSON AGENT to sign.</t>

<t>If a PERSON AGENT provides a code of MT02, and the ENTITY AGENT accepts A03, A04, and A05, the following agreements would be available to compare:</t>

<texttable>
      <ttcol align='left'>Client code (MT02)</ttcol>
      <ttcol align='left'>Server agreements</ttcol>
      <c>A01</c>
      <c>&#160;</c>
      <c>A02</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c><strong>A03</strong></c>
      <c>&#160;</c>
      <c><strong>A04</strong></c>
      <c>&#160;</c>
      <c>A05</c>
</texttable>

<t>In this example, there is no matching agreement, so the ENTITY AGENT MUST default select any of the most restrictive agreements, in this case A03 or A04, and the ENTITY AGENT MUST alert the PERSON AGENT that an agreement could not be negotiated within the PERSON AGENT's parameters before signing occurs. If the PERSON AGENT enables live interaction from the user, an alert MUST be displayed for confirmation of signing the selected agreement. If the PERSON AGENT is working in the background, with no interaction, it MUST NOT sign the agreement if a match is not found, and SHOULD terminate the negotiation with the ENTITY AGENT with no response. In this instance, the PERSON AGENT MAY allow users to approved the PERSON AGENT to accept all MyTerms requests from specific domains, as described above.</t>

<section anchor="requiring-multiple-agreements"><name>Requiring multiple agreements</name>

<t>If an entity requires multiple agreements to be signed, the PERSON AGENT follows the same pattern as above, and SHOULD alert the user that certain agreements must be signed before proceeding. In any displays offering up the ability to select these agreements, the PERSON AGENT MUST NOT pre-check any options unless the user has already set these options in their default preferences.</t>

</section>
</section>
<section anchor="manual-proposal-and-negotiation"><name>Manual proposal and negotiation</name>

<t>In this method, the PERSON AGENT to ENTITY AGENT negotiation occurs via the scanning of a QR code. This method makes MyTerms available to ENTITY AGENTS that do not yet have built-in MyTerms capabilities.</t>

<t>First a QR code is generated by the ENTITY that represents a URL to download required agreements from the ENTITY:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/get/sign-up
]]></artwork></figure>

<t>This QR code MUST be accompanied by a Base64 version of the URL with no carriage return, prefixed with <spanx style="verb">MTRS</spanx> for signing Relationship agreements, or <spanx style="verb">MTDS</spanx> for signing Data Contribution agreements, separated by a colon. A URL and QR Code MUST NOT contain both Relationship and Data Contribution agreements. Only one type may be included at a time. Example:</t>

<figure><artwork><![CDATA[
MTRS:aHR0...i11cA==
]]></artwork></figure>

<t>As manual proposals are intended to support those newly adopting MyTerms, the JSON response to this MUST include an endpoint to submit signed agreements to, and a list of required agreements in full JSON format to be signed:</t>

<figure><artwork><![CDATA[
{
  "endpoint": "https://<domain>.<tld>/api/v1/myterms/put",
  "agreements": [
    {
      "id": "<code>",
      "agreement": {
        "@context": "<context url>/myterms-v<version>.<hash>.jsonld",
        "version": <machine readable agreement version>,
        "parent": "<link to web-browser friendly agreement>",
        "agreementId": "<UUID representing this agreement>",
        "created": <epoch time>,
        "ids": [
          "<DID id>"
        ],
        "purposes": [
          "<purpose>"
        ],
        "prohibitions": [
          "<prohibition>"
        ],
        "validRoles": [
          "<role>"
        ]
      }
    }
  ]
}
]]></artwork></figure>

<section anchor="negotiation-of-manual-agreements"><name>Negotiation of manual agreements</name>

<t>Upon scanning the QR code or being provided the Base64 string, a PERSON AGENT MUST first determine what kind of agreement is being signed by stripping the prefixed <spanx style="verb">MTRS</spanx> or <spanx style="verb">MTDS</spanx> strings. The PERSON AGENT SHOULD then confirm that any agreements within an <spanx style="verb">MTRS</spanx> signing are Relationship agreements, and within an <spanx style="verb">MTDS</spanx> signing are Data Contribution agreements.</t>

<t>If the PERSON AGENT has stored default preferences for the user, and the user has specified that they accept the required agreements from the ENTITY by default, the PERSON AGENT MUST sign and deliver the results to the ENTITY endpoint without further user interaction.</t>

<t>If the PERSON AGENT has not stored default preferences for the user, or the user has not specified that they accept the required agreements from the ENTITY by default, the PERSON AGENT MUST inform the user that they are required to sign the agreements and ask for approval before signing and deliver the results to the ENTITY endpoint.</t>

</section>
</section>
</section>
<section anchor="signing-agreements"><name>Signing agreements</name>

<section anchor="levels-of-attestation"><name>Levels of attestation</name>

<t>When PERSON AGENTs sign agreements, there are 3 levels of attestation, one of which MUST be attested to for the agreement to be valid. The 3 levels are:</t>

<texttable>
      <ttcol align='left'>Level</ttcol>
      <ttcol align='left'>Title</ttcol>
      <c>1</c>
      <c>Server trusted remote attestation</c>
      <c>2</c>
      <c>Cryptographic attestation</c>
      <c>3</c>
      <c>Auditable cryptographic attestation</c>
</texttable>

<t>As the level increases, the security and verifiability of the attestation increases.</t>

<section anchor="level-1-server-trusted-remote-attestation"><name>Level 1: Server trusted remote attestation</name>

<t>In this level, ENTITY AGENTs MUST give PERSON AGENTs a checkbox that when checked, represents the signing of an agreement. ENTITY AGENTs MUST default the checkbox to unchecked.</t>

<t>Under this level of attestation, PERSON AGENTs are trusting that ENTITY AGENTs will act honestly and transparently around storing and abiding by their preferences, with no third-party auditing.</t>

</section>
<section anchor="level-2-cryptographic-attestation"><name>Level 2: Cryptographic attestation</name>

<t>In this level, ENTITY AGENTs MUST give PERSON AGENTs a method of cryptographically signing an agreement. Agreements MUST be signed utilizing a private key that represents the PERSON AGENT. This private key SHOULD be fully controlled by the end user, and not available to the ENTITY AGENT in any way. This private key MAY be owned by the ENTITY AGENT or an agent, if that ENTITY AGENT or agent was given a capability delegation from the user, and that delegation MUST be cryptographically signed and provided via a DID.</t>

<t>Signing an agreement MUST occur using an EdDSA JWT and a private key associated with any public key in the verification method of the signing DID. For example, if the signing DID document is represented by the following FedID enabled DID:</t>

<figure><artwork><![CDATA[
{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://didspec.myterms.info/v2/ctx.jsonld"
  ],
  "capabilityDelegation": [
    {
      "id": "did:myterms:fedid.myterms.info:GDj...",
      "type": "myterms",
      "archiveServers": [ "https://archive.myterms.info" ]
    },
  ],
  "created": "2025-10-30T16:00:14Z",
  "deactivated": false,
  "id": "did:myterms:fedid.myterms.info:iuK...",
  "recoveryHash": "d0a634b07cea22a9e3865eb5598e0486636bb772976bf93d",
  "service": [
    {
      "id": "did:myterms:fedid.myterms.info:5c7...",
      "serviceEndpoint": "https://fedid.myterms.info",
      "type": "login"
    }
  ],
  "shortName": "person@fedid.myterms.info",
  "updated": "2025-10-30T16:00:14Z",
  "verificationMethod": [
    {
      "controller": "did:myterms:fedid.myterms.info:iuK...",
      "created": "2025-10-30T16:00:14Z",
      "deactivated": null,
      "id": "#55b72a71d2431bd5eb10b347f1b272da",
      "key": "9ud_btCMlYQRHkTyyKMNtC48avmC60fCZhWNIbOsNi0",
      "type": "device"
    }
  ],
  "version": "2.0"
}
]]></artwork></figure>

<t>Then the private key associated with the public key <spanx style="verb">9ud_btCMlYQRHkTyyKMNtC48avmC60fCZhWNIbOsNi0</spanx> should be utilized. As this DID document also contains a capability delegation that MUST be of type <spanx style="verb">myterms</spanx>, any keys in the verification method array of that DID document may sign on behalf of the user.</t>

<t>The agreement MUST be signed via JWS following <xref target="RFC7515"/> after following <xref target="RFC8785"/> for canonicalization to deterministically sort by recursively ordering the keys alphanumerically and sorting any arrays alphanumerically. The resulting JSON data MUST be submitted via POST to the entity endpoint for submitting signed agreements. The format for the posted data MUST match the provided example, where the public key provided is the public key paired with the private key that was used to sign from the verification method array.</t>

<figure><artwork><![CDATA[
{
  "agreement": {
    "agreement": {
      "@context": "https://<url>/c/myterms-v1.DiF...P3f.jsonld",
      "version": 1,
      "parent": "https://<url>/a/74d...33d",
      "agreementId": "1df77ef2-e3c6-4f2b-859d-379cb9874d78",
      "created": 1760621627589,
      "ids": [
        "did:myterms:fedid.myterms.info:YTc..."
      ],
      "purposes": [
        "service-analytics",
        "service-delivery"
      ],
      "prohibitions": [
        "profiling",
        "third-party-analytics",
        "third-party-sharing",
        "tracking"
      ],
      "validRoles": [
        "entity",
        "third-party",
        "user"
      ]
    },
    "signature": {
      "version": 1,
      "id": "did:myterms:fedid.myterms.info:iuK...",
      "signedOn": 1761841201,
      "type": "JWS/JCS",
      "jws": "eyJ...ICg"
    }
  },
  "publicKey": "9ud_btCMlYQRHkTyyKMNtC48avmC60fCZhWNIbOsNi0"
}
]]></artwork></figure>

<t>Under this level of attestation, PERSON AGENTs are trusting that ENTITY AGENTs will act honestly and transparently around storing and abiding by their preferences, with no third-party auditing, but gain the security of a referenced cryptographic signature.</t>

</section>
<section anchor="level-3-auditable-cryptographic-attestation"><name>Level 3: Auditable cryptographic attestation</name>

<t>In this level, the same signing method MUST be used for agreements, however an additional zero-knowledge audit record MUST be provided. This allows a third-party to validate that the agreement was appropriately signed without having any knowledge of what the agreement contains.</t>

<t>After the agreement is signed, an audit record MUST be generated from the top-level agreement object, which consists of the original agreement and it's signature. This object MUST be deterministically sorted, and a SHA256 digest MUST be created. The format of the audit record MUST include:</t>

<t><list style="symbols">
  <t>A context of keys used in the audit record</t>
  <t>A reference to the agreement ID that was signed</t>
  <t>A zero-knowledge representation of the signed agreement</t>
  <t>When the audit record was created</t>
</list></t>

<t>Under this level of attestation, PERSON AGENTs are trusting that ENTITY AGENTs will act honestly and transparently around storing and abiding by their preferences, with the security of a referenced cryptographic signature and a third-party that can audit that signature was performed without modification to the agreement.</t>

</section>
</section>
</section>
<section anchor="discovery-and-standard-response"><name>Discovery and standard response</name>

<section anchor="capability-discovery"><name>Capability discovery</name>

<t>Per <xref target="RFC8615"/>, all endpoints SHOULD be discoverable via a "/.well-known/" entry. The URL format for this MUST be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/.well-known/myterms-configuration
]]></artwork></figure>

<t>The response MUST be JSON in the format of:</t>

<figure><artwork><![CDATA[
{
  "methods": [
    "continuous",
    "on-demand",
    "manual"
  ],
  "get_agreements_endpoint": "<get agreements URL>",
  "agreements_endpoint": "<agreements URL>",
  "deliver_agreements_endpoint": "<deliver agreements URL|null>"
}
]]></artwork></figure>

</section>
<section anchor="standard-responses-to-api-requests"><name>Standard responses to API requests</name>

<t>The following standard responses SHOULD be used on all API requests.</t>

<texttable>
      <ttcol align='left'>HTTP Response Code</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>200</c>
      <c>Success when retrieving or setting any data</c>
      <c>401</c>
      <c>The user is not authenticated (invalid or missing token)</c>
      <c>403</c>
      <c>The user is authenticated but not allowed to perform the action</c>
      <c>404</c>
      <c>The requested user or agreements record doesn't exist</c>
      <c>500</c>
      <c>Unknown general internal server error</c>
      <c>502</c>
      <c>Bad gateway</c>
      <c>503</c>
      <c>Service unavailable</c>
      <c>504</c>
      <c>Gateway timeout</c>
</texttable>

</section>
</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>This memo includes no request to IANA.</t>

</section>
<section anchor="Security"><name>Security Considerations</name>

<t>This document should not affect the security of the Internet.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>

<reference anchor="JSONLD" target="https://www.w3.org/TR/json-ld/">
  <front>
    <title>JSON-LD 1.1 - A JSON-based Serialization for Linked Data</title>
    <author >
      <organization>W3C</organization>
    </author>
    <date year="2020"/>
  </front>
</reference>
<reference anchor="DID" target="https://www.w3.org/TR/did-1.0/">
  <front>
    <title>Decentralized Identifiers (DIDs) v1.0 - Core architecture, data model, and representations</title>
    <author >
      <organization>W3C</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>
<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>
<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="IEEE7012" target="https://ieeexplore.ieee.org/servlet/opac?punumber=11170391">
  <front>
    <title>IEEE 7012 - Machine Readable Personal Privacy Terms</title>
    <author >
      <organization>IEEE</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>


<reference anchor="RFC7258">
  <front>
    <title>Pervasive Monitoring Is an Attack</title>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="May" year="2014"/>
    <abstract>
      <t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="188"/>
  <seriesInfo name="RFC" value="7258"/>
  <seriesInfo name="DOI" value="10.17487/RFC7258"/>
</reference>



    </references>

</references>


<?line 618?>



  </back>

<!-- ##markdown-source:
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
Mu9uc5nEm9J5WdtArS06T2FOS0gijlldOsUoXZpo2Xu3cNl4osnKsKi4I01R
kwNSmGPTWB0b0MI0fiIHgnXfBSGsTmOx2Xr3NofmLkmkscLm++G0azoUD3eT
NVV4xNs8rkcxmaJdL3eBm8XknoU4Q+YJnWCrxvwV0wgwr5xydXAz5B1qMUOk
Fn1UFXKe9MapsZ8NC92soQokxZe18yKNuJfVO7UAmKO15U6sR6BUWGGTABQ1
CVDZWKhlIcrNPYJ1I5SU7MfjB9LHfh/9TYGDpylxzIKgfikAAk2ZDCtiLuEl
HpOH302OXcTasZ6zRhleEbq+Bn1Zq0nrlNGePmE/govBgjP5Yomy5xlCN+Ue
IhSTbReXUuH0lLERfXX1YIIdjs2k0XkpKosM0XfMi9KWh+jMQUPFAEakNAdf
JxNNwESw0votNqKpuEFNPxjakx1sm7LGKboUAeqicAa+U40BOolN1OPukuwI
YApTsdbHgU/tpnU7tAmSKdCsnM1FB6yZtVyHGsjLkupiKe25jFba6pCBt7Fa
9sN+ycZe3KrpvdGB1SNheWOOG8MTtxAROCXalF8WraOspRcK7l3HNd5A7gnr
8A4RH5wq6rEXWbwa14mrU9AedkS9Y0KeQ1L1RCAaPMZRRhge2THhkd2ueA7m
zI8/NZM+5iKxQFWhCWY8CmKl7p9h58/vrng/3rWCWY53mNTIiYzgSGBSYefu
xQsYxYsX5i++p1zFTYcE1mZEZs0LmtGk7icxT9rk5DK9F5wsvQ5JiYMAIvbJ
uXkU8UcPEn+nyzRn4u/9nsQfPUR8+jPCP47o9GmXPsFwnAXyyc75WmnmDjt7
BC2yB1bGnjGw+9qb1wcvXZABhJjhjbmllAK7u4GwDXBXXz6O3q6lQ0pWiD2H
WoM+fgt4bDLIASVRnrM4H/YCC7K2dOx8rWcG84VCk1RLybd6zMYJPYQ21nQG
PAlW4oiGGOI3gSNMHZeuOe2l6VK3DyVGRuJLimSG4yCky5NSwBeku9LMHyNp
VYtAW1IISBERJzBXIHymxjxHGaE8uWVN93tDlqIZh0FsdLRGYjYmD3ttauhc
NBGyg+PrsvwgGrfHHwREd+uH0UkfCZS7pAxSpOp8LfBYsL6wR5ck27RoK2qi
FbSb3zJH1gxyxhnx+iIogbh07lmsur/30PByKO1KTpN4fZJz7eUQMGMT5NIR
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
1L7OxO9nNHlN2274u2GY69jp/A+PP0LuE3MAAA==

-->

</rfc>

