mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-28 12:03:06 +00:00
deploy: 3e2c487ad9
This commit is contained in:
1 parent
54a9532e66
commit
c193493e6c
4 files changed
+102
-232
No files matched your search
@@ -937,7 +937,7 @@ window.addEventListener('click',(e)=>{
|
||||
<h2 id="abstract" tabindex="-1">Abstract</h2>
|
||||
<p>This document defines how software agents find SimpleX addresses and call the tools of other agents and bots over SimpleX:</p>
|
||||
<ul>
|
||||
<li>an <code>llms.txt</code> section with communication addresses, beside the link relation types and the well-known document of <a href="/docs/protocol/web-discovery.html">Publishing SimpleX addresses on websites</a>;</li>
|
||||
<li>an <code>llms.txt</code> section with communication addresses, beside the link relation type and the well-known document of <a href="/docs/protocol/web-discovery.html">Publishing SimpleX addresses on websites</a>;</li>
|
||||
<li>declarations: the protocols a profile serves and their transports, the peer types a channel or a contact address is made for, and the update frequency of a channel;</li>
|
||||
<li>the chat transport: the command <code>/_call</code> in a conversation;</li>
|
||||
<li>the Service RPC transport: one request and one response, without a conversation, in a generic envelope;</li>
|
||||
@@ -997,10 +997,10 @@ window.addEventListener('click',(e)=>{
|
||||
<p>For SimpleX entries, the type <code>updates</code> requires a channel link, the type <code>group</code> a group link, and the types <code>contact</code> and <code>business contact</code> a contact address link [WEB]. The link text is the title of the address.</p>
|
||||
<pre><code>## Communications
|
||||
|
||||
- [Ridgeline updates](https://smp12.simplex.im/c#…): SimpleX updates for people and agents, weekly. Trail conditions and closures.
|
||||
- [Ridgeline hikers](https://smp12.simplex.im/g#…): SimpleX group for people. Routes and meetups.
|
||||
- [Ask Ridgeline](https://smp12.simplex.im/a#…): SimpleX business contact for agents, MCP. Bookings and availability.
|
||||
- [Ridgeline support](mailto:help@ridgeline.example): Email contact for people.
|
||||
- [Acme news](https://smp12.simplex.im/c#…): SimpleX updates for people and agents, weekly. Product news and offers.
|
||||
- [Acme customers](https://smp12.simplex.im/g#…): SimpleX group for people. Questions and tips from customers.
|
||||
- [Ask Acme](https://smp12.simplex.im/a#…): SimpleX business contact for agents, MCP. Orders and availability.
|
||||
- [Acme support](mailto:support@acme.example): Email contact for people.
|
||||
</code></pre>
|
||||
<h2 id="profile-declarations" tabindex="-1">Profile declarations</h2>
|
||||
<p>A profile or a group declares the protocols it serves in its preferences. A channel or a public group declares its audience in its public group record, and a channel also its update frequency. A contact address declares the peers it serves in its link data.</p>
|
||||
@@ -1115,7 +1115,7 @@ window.addEventListener('click',(e)=>{
|
||||
<pre><code>/_service_request <userId> <target> [timeout=<seconds>] [sign_key=<key>] <json>
|
||||
</code></pre>
|
||||
<ul>
|
||||
<li><code><target></code>: a contact address link, full or short, or the SimpleX name of a contact address [NAMES].</li>
|
||||
<li><code><target></code>: a contact address link, or the SimpleX name of a contact address [NAMES].</li>
|
||||
<li><code>timeout</code>: how long the requester waits for the response. The default is 30 seconds.</li>
|
||||
<li><code>sign_key</code>: the requester's Ed25519 private key, for a <a href="#signed-requests">signed request</a>.</li>
|
||||
<li><code><json></code>: the <a href="#request">request</a>, a JSON object.</li>
|
||||
@@ -1227,11 +1227,11 @@ window.addEventListener('click',(e)=>{
|
||||
"tools": [
|
||||
{
|
||||
"name": "availability",
|
||||
"description": "Rooms available on a date",
|
||||
"description": "Items in stock",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {"date": {"type": "string"}},
|
||||
"required": ["date"]
|
||||
"properties": {"item": {"type": "string"}},
|
||||
"required": ["item"]
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -1249,7 +1249,7 @@ window.addEventListener('click',(e)=>{
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": "availability",
|
||||
"arguments": {"date": "2026-11-02"},
|
||||
"arguments": {"item": "anvil"},
|
||||
"_meta": {
|
||||
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
|
||||
"io.modelcontextprotocol/clientCapabilities": {}
|
||||
@@ -1265,7 +1265,7 @@ window.addEventListener('click',(e)=>{
|
||||
"id": 1,
|
||||
"result": {
|
||||
"resultType": "complete",
|
||||
"content": [{"type": "text", "text": "Three rooms are available on 2026-11-02."}],
|
||||
"content": [{"type": "text", "text": "12 anvils are in stock."}],
|
||||
"isError": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ Evgeny Poberezkin
|
||||
|
||||
This document defines how software agents find SimpleX addresses and call the tools of other agents and bots over SimpleX:
|
||||
|
||||
- an `llms.txt` section with communication addresses, beside the link relation types and the well-known document of [Publishing SimpleX addresses on websites](https://simplex.chat/docs/protocol/web-discovery.md);
|
||||
- an `llms.txt` section with communication addresses, beside the link relation type and the well-known document of [Publishing SimpleX addresses on websites](https://simplex.chat/docs/protocol/web-discovery.md);
|
||||
- declarations: the protocols a profile serves and their transports, the peer types a channel or a contact address is made for, and the update frequency of a channel;
|
||||
- the chat transport: the command `/_call` in a conversation;
|
||||
- the Service RPC transport: one request and one response, without a conversation, in a generic envelope;
|
||||
@@ -111,10 +111,10 @@ For SimpleX entries, the type `updates` requires a channel link, the type `group
|
||||
```
|
||||
## Communications
|
||||
|
||||
- [Ridgeline updates](https://smp12.simplex.im/c#…): SimpleX updates for people and agents, weekly. Trail conditions and closures.
|
||||
- [Ridgeline hikers](https://smp12.simplex.im/g#…): SimpleX group for people. Routes and meetups.
|
||||
- [Ask Ridgeline](https://smp12.simplex.im/a#…): SimpleX business contact for agents, MCP. Bookings and availability.
|
||||
- [Ridgeline support](mailto:help@ridgeline.example): Email contact for people.
|
||||
- [Acme news](https://smp12.simplex.im/c#…): SimpleX updates for people and agents, weekly. Product news and offers.
|
||||
- [Acme customers](https://smp12.simplex.im/g#…): SimpleX group for people. Questions and tips from customers.
|
||||
- [Ask Acme](https://smp12.simplex.im/a#…): SimpleX business contact for agents, MCP. Orders and availability.
|
||||
- [Acme support](mailto:support@acme.example): Email contact for people.
|
||||
```
|
||||
|
||||
## Profile declarations
|
||||
@@ -250,7 +250,7 @@ The requester's core sends the request with:
|
||||
/_service_request <userId> <target> [timeout=<seconds>] [sign_key=<key>] <json>
|
||||
```
|
||||
|
||||
- `<target>`: a contact address link, full or short, or the SimpleX name of a contact address [NAMES].
|
||||
- `<target>`: a contact address link, or the SimpleX name of a contact address [NAMES].
|
||||
- `timeout`: how long the requester waits for the response. The default is 30 seconds.
|
||||
- `sign_key`: the requester's Ed25519 private key, for a [signed request](#signed-requests).
|
||||
- `<json>`: the [request](#request), a JSON object.
|
||||
@@ -380,11 +380,11 @@ The reply:
|
||||
"tools": [
|
||||
{
|
||||
"name": "availability",
|
||||
"description": "Rooms available on a date",
|
||||
"description": "Items in stock",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {"date": {"type": "string"}},
|
||||
"required": ["date"]
|
||||
"properties": {"item": {"type": "string"}},
|
||||
"required": ["item"]
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -405,7 +405,7 @@ Calling a tool over Service RPC, the request:
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": "availability",
|
||||
"arguments": {"date": "2026-11-02"},
|
||||
"arguments": {"item": "anvil"},
|
||||
"_meta": {
|
||||
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
|
||||
"io.modelcontextprotocol/clientCapabilities": {}
|
||||
@@ -424,7 +424,7 @@ The response:
|
||||
"id": 1,
|
||||
"result": {
|
||||
"resultType": "complete",
|
||||
"content": [{"type": "text", "text": "Three rooms are available on 2026-11-02."}],
|
||||
"content": [{"type": "text", "text": "12 anvils are in stock."}],
|
||||
"isError": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -898,11 +898,9 @@ window.addEventListener('click',(e)=>{
|
||||
<li><a href="#abstract">Abstract</a></li>
|
||||
<li><a href="#conventions">Conventions</a></li>
|
||||
<li><a href="#terms">Terms</a></li>
|
||||
<li><a href="#link-relation-types">Link relation types</a>
|
||||
<li><a href="#link-relation-type">Link relation type</a>
|
||||
<ul>
|
||||
<li><a href="#simplex-channel">simplex-channel</a></li>
|
||||
<li><a href="#simplex-group">simplex-group</a></li>
|
||||
<li><a href="#simplex-contact">simplex-contact</a></li>
|
||||
<li><a href="#simplex">simplex</a></li>
|
||||
<li><a href="#owners-and-described-addresses">Owner's and described addresses</a></li>
|
||||
<li><a href="#target-attributes">Target attributes</a></li>
|
||||
<li><a href="#html">HTML</a></li>
|
||||
@@ -921,7 +919,7 @@ window.addEventListener('click',(e)=>{
|
||||
<li><a href="#privacy-considerations">Privacy considerations</a></li>
|
||||
<li><a href="#iana-considerations">IANA considerations</a>
|
||||
<ul>
|
||||
<li><a href="#link-relation-types-registration">Link relation types registration</a></li>
|
||||
<li><a href="#link-relation-type-registration">Link relation type registration</a></li>
|
||||
<li><a href="#well-known-uri-registration">Well-known URI registration</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -931,7 +929,7 @@ window.addEventListener('click',(e)=>{
|
||||
<h2 id="abstract" tabindex="-1">Abstract</h2>
|
||||
<p>This document defines how a website publishes SimpleX channels, groups and contact addresses:</p>
|
||||
<ul>
|
||||
<li>the link relation types <code>simplex-channel</code>, <code>simplex-group</code> and <code>simplex-contact</code>, for the HTML elements <code>link</code>, <code>a</code> and <code>area</code>, and for the HTTP <code>Link</code> header field. Their targets are the addresses of the website's owner, or the addresses a page describes, such as the entries of a directory;</li>
|
||||
<li>the link relation type <code>simplex</code>, for the HTML elements <code>link</code>, <code>a</code> and <code>area</code>, and for the HTTP <code>Link</code> header field. Its targets are the addresses of the website's owner, or the addresses a page describes, such as the entries of a directory;</li>
|
||||
<li>the well-known URI <code>simplex.json</code>: a JSON document with the owner's channels, groups and contact addresses, their audience, the update frequency of each channel, and the kind and the protocols of each contact address.</li>
|
||||
</ul>
|
||||
<p>People and software agents subscribe to a channel to receive updates, join a group to take part in its conversations, and connect to a contact address to send requests. <a href="/docs/protocol/agent-protocols.html">Agent protocols over SimpleX</a> defines the requests an agent sends to a contact address, and an <code>llms.txt</code> section with the same addresses.</p>
|
||||
@@ -940,40 +938,36 @@ window.addEventListener('click',(e)=>{
|
||||
<p>JSON schemas use JSON Type Definition [RFC8927].</p>
|
||||
<h2 id="terms" tabindex="-1">Terms</h2>
|
||||
<ul>
|
||||
<li><strong>SimpleX link</strong>: a connection link of the SimpleX Agent protocol, in the full or the short syntax, with the <code>https</code> or the <code>simplex</code> scheme [AGENT].</li>
|
||||
<li><strong>Channel link</strong>: a short SimpleX link of type <code>c</code>, for example <code>https://smp12.simplex.im/c#<key></code>.</li>
|
||||
<li><strong>Group link</strong>: a short SimpleX link of type <code>g</code>, for example <code>https://smp12.simplex.im/g#<key></code>, or a full SimpleX link of a group.</li>
|
||||
<li><strong>Contact address link</strong>: a short SimpleX link of type <code>a</code>, for example <code>https://smp12.simplex.im/a#<key></code>, or a full SimpleX link of type <code>contact</code>.</li>
|
||||
<li><strong>SimpleX link</strong>: a short connection link of the SimpleX Agent protocol, with the <code>https</code> or the <code>simplex</code> scheme [AGENT]. The type in the link is the kind of the address.</li>
|
||||
<li><strong>Channel link</strong>: a SimpleX link of type <code>c</code>, for example <code>https://smp12.simplex.im/c#<key></code>.</li>
|
||||
<li><strong>Group link</strong>: a SimpleX link of type <code>g</code>, for example <code>https://smp12.simplex.im/g#<key></code>.</li>
|
||||
<li><strong>Contact address link</strong>: a SimpleX link of type <code>a</code>, for example <code>https://smp12.simplex.im/a#<key></code>.</li>
|
||||
<li><strong>SimpleX name</strong>: a name in the SimpleX name service [NAMES]. <code>#example.simplex</code> is the name of a channel, <code>@example.simplex</code> the name of a contact address.</li>
|
||||
<li><strong>Owner</strong>: the person or organization that publishes the website.</li>
|
||||
</ul>
|
||||
<h2 id="link-relation-types" tabindex="-1">Link relation types</h2>
|
||||
<h3 id="simplex-channel" tabindex="-1">simplex-channel</h3>
|
||||
<p>The target of a <code>simplex-channel</code> link is a SimpleX channel of the owner of the link context, or a SimpleX channel described by the link context. The target MUST be a channel link.</p>
|
||||
<h3 id="simplex-group" tabindex="-1">simplex-group</h3>
|
||||
<p>The target of a <code>simplex-group</code> link is a SimpleX group of the owner of the link context, or a SimpleX group described by the link context. The target MUST be a group link.</p>
|
||||
<h3 id="simplex-contact" tabindex="-1">simplex-contact</h3>
|
||||
<p>The target of a <code>simplex-contact</code> link is a SimpleX contact address of the owner of the link context, or a SimpleX contact address described by the link context. The target MUST be a contact address link.</p>
|
||||
<h2 id="link-relation-type" tabindex="-1">Link relation type</h2>
|
||||
<h3 id="simplex" tabindex="-1">simplex</h3>
|
||||
<p>The target of a <code>simplex</code> link is a SimpleX channel, group or contact address of the owner of the link context, or described by the link context. The target MUST be a channel link, a group link or a contact address link. The type in the link tells which.</p>
|
||||
<h3 id="owners-and-described-addresses" tabindex="-1">Owner's and described addresses</h3>
|
||||
<p>A page that describes the addresses of others, such as a directory or a catalogue, uses the relation types on its entries. The owner's own addresses are listed in the <a href="#well-known-uri">well-known document</a>.</p>
|
||||
<p>A page that describes the addresses of others, such as a directory or a catalogue, uses the relation type on its entries. The owner's own addresses are listed in the <a href="#well-known-uri">well-known document</a>.</p>
|
||||
<h3 id="target-attributes" tabindex="-1">Target attributes</h3>
|
||||
<ul>
|
||||
<li><code>title</code>: the name of the channel, the group or the address, for display. In HTTP, a title with non-ASCII characters is sent as <code>title*</code> [RFC8187].</li>
|
||||
<li><code>hreflang</code>: the language of the channel's posts, or of the conversations [BCP47].</li>
|
||||
</ul>
|
||||
<p>A link context MAY have several links of one relation type. Their order is the owner's order of preference: document order in HTML, and the order of link values in HTTP.</p>
|
||||
<p>A link context MAY have several <code>simplex</code> links of one kind. Their order is the owner's order of preference: document order in HTML, and the order of link values in HTTP.</p>
|
||||
<h3 id="html" tabindex="-1">HTML</h3>
|
||||
<p>In the document head:</p>
|
||||
<pre><code class="language-html"><link rel="simplex-channel" href="https://smp12.simplex.im/c#…" hreflang="en" title="Ridgeline updates">
|
||||
<link rel="simplex-contact" href="https://smp12.simplex.im/a#…" hreflang="en" title="Ask Ridgeline">
|
||||
<pre><code class="language-html"><link rel="simplex" href="https://smp12.simplex.im/c#…" hreflang="en" title="Acme news">
|
||||
<link rel="simplex" href="https://smp12.simplex.im/a#…" hreflang="en" title="Ask Acme">
|
||||
</code></pre>
|
||||
<p>In the document body, the relation types are used on visible links, for example on the entries of a directory:</p>
|
||||
<pre><code class="language-html"><a rel="simplex-contact" href="https://smp12.simplex.im/a#…">Chat with us</a>
|
||||
<a rel="simplex-group" href="https://smp12.simplex.im/g#…">Ridgeline hikers</a>
|
||||
<p>In the document body, the relation type is used on visible links, for example on the entries of a directory:</p>
|
||||
<pre><code class="language-html"><a rel="simplex" href="https://smp12.simplex.im/a#…">Chat with us</a>
|
||||
<a rel="simplex" href="https://smp12.simplex.im/g#…">Acme customers</a>
|
||||
</code></pre>
|
||||
<h3 id="http" tabindex="-1">HTTP</h3>
|
||||
<pre><code>Link: <https://smp12.simplex.im/c#…>; rel="simplex-channel"; hreflang="en"; title="Ridgeline updates"
|
||||
Link: <https://smp12.simplex.im/a#…>; rel="simplex-contact"; hreflang="en"; title="Ask Ridgeline"
|
||||
<pre><code>Link: <https://smp12.simplex.im/c#…>; rel="simplex"; hreflang="en"; title="Acme news"
|
||||
Link: <https://smp12.simplex.im/a#…>; rel="simplex"; hreflang="en"; title="Ask Acme"
|
||||
</code></pre>
|
||||
<h2 id="well-known-uri" tabindex="-1">Well-known URI</h2>
|
||||
<h3 id="retrieval" tabindex="-1">Retrieval</h3>
|
||||
@@ -1026,8 +1020,8 @@ Link: <https://smp12.simplex.im/a#…>; rel="simplex-contact"; h
|
||||
"channels": [
|
||||
{
|
||||
"link": "https://smp12.simplex.im/c#…",
|
||||
"name": "#ridgeline.simplex",
|
||||
"title": "Ridgeline updates",
|
||||
"name": "#acme.simplex",
|
||||
"title": "Acme news",
|
||||
"lang": "en",
|
||||
"audience": ["people", "agents"],
|
||||
"changeFrequency": "weekly"
|
||||
@@ -1036,15 +1030,15 @@ Link: <https://smp12.simplex.im/a#…>; rel="simplex-contact"; h
|
||||
"groups": [
|
||||
{
|
||||
"link": "https://smp12.simplex.im/g#…",
|
||||
"title": "Ridgeline hikers",
|
||||
"title": "Acme customers",
|
||||
"lang": "en"
|
||||
}
|
||||
],
|
||||
"contacts": [
|
||||
{
|
||||
"link": "https://smp12.simplex.im/a#…",
|
||||
"name": "@ridgeline.simplex",
|
||||
"title": "Ask Ridgeline",
|
||||
"name": "@acme.simplex",
|
||||
"title": "Ask Acme",
|
||||
"lang": "en",
|
||||
"audience": ["agents"],
|
||||
"business": true,
|
||||
@@ -1056,7 +1050,7 @@ Link: <https://smp12.simplex.im/a#…>; rel="simplex-contact"; h
|
||||
<h2 id="processing" tabindex="-1">Processing</h2>
|
||||
<ul>
|
||||
<li>A consumer MUST ignore unknown fields and unknown <code>audience</code> values.</li>
|
||||
<li>A consumer MUST ignore a link of a type other than the one its relation type or its list requires.</li>
|
||||
<li>A consumer MUST ignore a <code>simplex</code> link that is not a channel, group or contact address link, and an entry of <code>simplex.json</code> whose link is of a type other than its list requires.</li>
|
||||
<li>The values on the website are hints. The data retrieved with the link is authoritative: an audience, an update frequency, the business flag or protocols declared there [AGENTS] take precedence over the website's values.</li>
|
||||
<li>A consumer MAY connect by <code>link</code> or by <code>name</code>. Resolving a name reveals interest in it to one names router, and verifies that the name's record and the profile's claim match [NAMES].</li>
|
||||
</ul>
|
||||
@@ -1069,49 +1063,17 @@ Link: <https://smp12.simplex.im/a#…>; rel="simplex-contact"; h
|
||||
</ul>
|
||||
<h2 id="privacy-considerations" tabindex="-1">Privacy considerations</h2>
|
||||
<ul>
|
||||
<li>The relation types and the well-known document are intended for owners who want to be reachable, such as channels, communities, businesses and services, and for pages that describe them, such as directories.</li>
|
||||
<li>The relation type and the well-known document are intended for owners who want to be reachable, such as channels, communities, businesses and services, and for pages that describe them, such as directories.</li>
|
||||
<li>A subscriber or a requester connects through the SimpleX network, without contacting the website. Retrieving a page or the well-known document is an ordinary web request.</li>
|
||||
</ul>
|
||||
<h2 id="iana-considerations" tabindex="-1">IANA considerations</h2>
|
||||
<h3 id="link-relation-types-registration" tabindex="-1">Link relation types registration</h3>
|
||||
<p>Three registrations in the "Link Relation Types" registry [RFC8288]:</p>
|
||||
<h3 id="link-relation-type-registration" tabindex="-1">Link relation type registration</h3>
|
||||
<p>One registration in the "Link Relation Types" registry [RFC8288]:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>Relation Name: <code>simplex-channel</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Description: Refers to a SimpleX channel of the owner of the link context, or described by the link context.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Reference: <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-channel">https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-channel</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Notes: The target is a SimpleX channel link [AGENT], with the <code>https</code> scheme or the provisionally registered <code>simplex</code> scheme.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Relation Name: <code>simplex-group</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Description: Refers to a SimpleX group of the owner of the link context, or described by the link context.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Reference: <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-group">https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-group</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Notes: The target is a SimpleX group link [AGENT], with the <code>https</code> scheme or the provisionally registered <code>simplex</code> scheme.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Relation Name: <code>simplex-contact</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Description: Refers to a SimpleX contact address of the owner of the link context, or described by the link context.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Reference: <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-contact">https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-contact</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Notes: The target is a SimpleX contact address link [AGENT], with the <code>https</code> scheme or the provisionally registered <code>simplex</code> scheme.</p>
|
||||
</li>
|
||||
<li>Relation Name: <code>simplex</code></li>
|
||||
<li>Description: Refers to a SimpleX channel, group or contact address of the owner of the link context, or described by the link context.</li>
|
||||
<li>Reference: <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex">https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex</a></li>
|
||||
<li>Notes: The target is a SimpleX short link [AGENT] of a channel, a group or a contact address, with the <code>https</code> scheme or the provisionally registered <code>simplex</code> scheme.</li>
|
||||
</ul>
|
||||
<h3 id="well-known-uri-registration" tabindex="-1">Well-known URI registration</h3>
|
||||
<p>One registration in the "Well-Known URIs" registry [RFC8615]:</p>
|
||||
@@ -1123,75 +1085,19 @@ Link: <https://smp12.simplex.im/a#…>; rel="simplex-contact"; h
|
||||
<li>Related Information: SimpleX link syntax [AGENT].</li>
|
||||
</ul>
|
||||
<h2 id="html-link-type-extensions" tabindex="-1">HTML link type extensions</h2>
|
||||
<p>The HTML standard requires extension link types to be registered on the microformats page "existing-rel-values" [HTML] [MF-REL]. The entries:</p>
|
||||
<p>The HTML standard requires extension link types to be registered on the microformats page "existing-rel-values" [HTML] [MF-REL]. The entry:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>Keyword: <code>simplex-channel</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>link</code>: Hyperlink</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>a</code>, <code>area</code>: Hyperlink</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>form</code>: not allowed</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Brief description: Refers to a SimpleX channel of the page's owner, or described by the page.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Specification: <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-channel">https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-channel</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Status: proposed</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Keyword: <code>simplex-group</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>link</code>: Hyperlink</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>a</code>, <code>area</code>: Hyperlink</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>form</code>: not allowed</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Brief description: Refers to a SimpleX group of the page's owner, or described by the page.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Specification: <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-group">https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-group</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Status: proposed</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Keyword: <code>simplex-contact</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>link</code>: Hyperlink</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>a</code>, <code>area</code>: Hyperlink</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Effect on <code>form</code>: not allowed</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Brief description: Refers to a SimpleX contact address of the page's owner, or described by the page.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Specification: <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-contact">https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-contact</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Status: proposed</p>
|
||||
</li>
|
||||
<li>Keyword: <code>simplex</code></li>
|
||||
<li>Effect on <code>link</code>: Hyperlink</li>
|
||||
<li>Effect on <code>a</code>, <code>area</code>: Hyperlink</li>
|
||||
<li>Effect on <code>form</code>: not allowed</li>
|
||||
<li>Brief description: Refers to a SimpleX channel, group or contact address of the page's owner, or described by the page.</li>
|
||||
<li>Specification: <a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex">https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex</a></li>
|
||||
<li>Status: proposed</li>
|
||||
</ul>
|
||||
<h2 id="references" tabindex="-1">References</h2>
|
||||
<ul>
|
||||
<li>[AGENT] SimpleX Agent protocol, connection links: <a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/agent-protocol.md#connection-link-1-time-invitation-and-contact-address">https://github.com/simplex-chat/simplexmq/blob/stable/protocol/agent-protocol.md#connection-link-1-time-invitation-and-contact-address</a></li>
|
||||
<li>[AGENT] SimpleX Agent protocol, short connection links: <a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/agent-protocol.md#short-connection-link-syntax">https://github.com/simplex-chat/simplexmq/blob/stable/protocol/agent-protocol.md#short-connection-link-syntax</a></li>
|
||||
<li>[AGENTS] Agent protocols over SimpleX: <a href="/docs/protocol/agent-protocols.html">agent-protocols.md</a></li>
|
||||
<li>[BCP47] Tags for Identifying Languages: <a href="https://www.rfc-editor.org/info/bcp47">https://www.rfc-editor.org/info/bcp47</a></li>
|
||||
<li>[BUSINESS] Using SimpleX Chat in business: <a href="/docs/business.html">BUSINESS.md</a></li>
|
||||
|
||||
@@ -9,10 +9,8 @@ Evgeny Poberezkin
|
||||
- [Abstract](#abstract)
|
||||
- [Conventions](#conventions)
|
||||
- [Terms](#terms)
|
||||
- [Link relation types](#link-relation-types)
|
||||
- [simplex-channel](#simplex-channel)
|
||||
- [simplex-group](#simplex-group)
|
||||
- [simplex-contact](#simplex-contact)
|
||||
- [Link relation type](#link-relation-type)
|
||||
- [simplex](#simplex)
|
||||
- [Owner's and described addresses](#owners-and-described-addresses)
|
||||
- [Target attributes](#target-attributes)
|
||||
- [HTML](#html)
|
||||
@@ -25,7 +23,7 @@ Evgeny Poberezkin
|
||||
- [Security considerations](#security-considerations)
|
||||
- [Privacy considerations](#privacy-considerations)
|
||||
- [IANA considerations](#iana-considerations)
|
||||
- [Link relation types registration](#link-relation-types-registration)
|
||||
- [Link relation type registration](#link-relation-type-registration)
|
||||
- [Well-known URI registration](#well-known-uri-registration)
|
||||
- [HTML link type extensions](#html-link-type-extensions)
|
||||
- [References](#references)
|
||||
@@ -34,7 +32,7 @@ Evgeny Poberezkin
|
||||
|
||||
This document defines how a website publishes SimpleX channels, groups and contact addresses:
|
||||
|
||||
- the link relation types `simplex-channel`, `simplex-group` and `simplex-contact`, for the HTML elements `link`, `a` and `area`, and for the HTTP `Link` header field. Their targets are the addresses of the website's owner, or the addresses a page describes, such as the entries of a directory;
|
||||
- the link relation type `simplex`, for the HTML elements `link`, `a` and `area`, and for the HTTP `Link` header field. Its targets are the addresses of the website's owner, or the addresses a page describes, such as the entries of a directory;
|
||||
- the well-known URI `simplex.json`: a JSON document with the owner's channels, groups and contact addresses, their audience, the update frequency of each channel, and the kind and the protocols of each contact address.
|
||||
|
||||
People and software agents subscribe to a channel to receive updates, join a group to take part in its conversations, and connect to a contact address to send requests. [Agent protocols over SimpleX](https://simplex.chat/docs/protocol/agent-protocols.md) defines the requests an agent sends to a contact address, and an `llms.txt` section with the same addresses.
|
||||
@@ -47,59 +45,51 @@ JSON schemas use JSON Type Definition [RFC8927].
|
||||
|
||||
## Terms
|
||||
|
||||
- **SimpleX link**: a connection link of the SimpleX Agent protocol, in the full or the short syntax, with the `https` or the `simplex` scheme [AGENT].
|
||||
- **Channel link**: a short SimpleX link of type `c`, for example `https://smp12.simplex.im/c#<key>`.
|
||||
- **Group link**: a short SimpleX link of type `g`, for example `https://smp12.simplex.im/g#<key>`, or a full SimpleX link of a group.
|
||||
- **Contact address link**: a short SimpleX link of type `a`, for example `https://smp12.simplex.im/a#<key>`, or a full SimpleX link of type `contact`.
|
||||
- **SimpleX link**: a short connection link of the SimpleX Agent protocol, with the `https` or the `simplex` scheme [AGENT]. The type in the link is the kind of the address.
|
||||
- **Channel link**: a SimpleX link of type `c`, for example `https://smp12.simplex.im/c#<key>`.
|
||||
- **Group link**: a SimpleX link of type `g`, for example `https://smp12.simplex.im/g#<key>`.
|
||||
- **Contact address link**: a SimpleX link of type `a`, for example `https://smp12.simplex.im/a#<key>`.
|
||||
- **SimpleX name**: a name in the SimpleX name service [NAMES]. `#example.simplex` is the name of a channel, `@example.simplex` the name of a contact address.
|
||||
- **Owner**: the person or organization that publishes the website.
|
||||
|
||||
## Link relation types
|
||||
## Link relation type
|
||||
|
||||
### simplex-channel
|
||||
### simplex
|
||||
|
||||
The target of a `simplex-channel` link is a SimpleX channel of the owner of the link context, or a SimpleX channel described by the link context. The target MUST be a channel link.
|
||||
|
||||
### simplex-group
|
||||
|
||||
The target of a `simplex-group` link is a SimpleX group of the owner of the link context, or a SimpleX group described by the link context. The target MUST be a group link.
|
||||
|
||||
### simplex-contact
|
||||
|
||||
The target of a `simplex-contact` link is a SimpleX contact address of the owner of the link context, or a SimpleX contact address described by the link context. The target MUST be a contact address link.
|
||||
The target of a `simplex` link is a SimpleX channel, group or contact address of the owner of the link context, or described by the link context. The target MUST be a channel link, a group link or a contact address link. The type in the link tells which.
|
||||
|
||||
### Owner's and described addresses
|
||||
|
||||
A page that describes the addresses of others, such as a directory or a catalogue, uses the relation types on its entries. The owner's own addresses are listed in the [well-known document](#well-known-uri).
|
||||
A page that describes the addresses of others, such as a directory or a catalogue, uses the relation type on its entries. The owner's own addresses are listed in the [well-known document](#well-known-uri).
|
||||
|
||||
### Target attributes
|
||||
|
||||
- `title`: the name of the channel, the group or the address, for display. In HTTP, a title with non-ASCII characters is sent as `title*` [RFC8187].
|
||||
- `hreflang`: the language of the channel's posts, or of the conversations [BCP47].
|
||||
|
||||
A link context MAY have several links of one relation type. Their order is the owner's order of preference: document order in HTML, and the order of link values in HTTP.
|
||||
A link context MAY have several `simplex` links of one kind. Their order is the owner's order of preference: document order in HTML, and the order of link values in HTTP.
|
||||
|
||||
### HTML
|
||||
|
||||
In the document head:
|
||||
|
||||
```html
|
||||
<link rel="simplex-channel" href="https://smp12.simplex.im/c#…" hreflang="en" title="Ridgeline updates">
|
||||
<link rel="simplex-contact" href="https://smp12.simplex.im/a#…" hreflang="en" title="Ask Ridgeline">
|
||||
<link rel="simplex" href="https://smp12.simplex.im/c#…" hreflang="en" title="Acme news">
|
||||
<link rel="simplex" href="https://smp12.simplex.im/a#…" hreflang="en" title="Ask Acme">
|
||||
```
|
||||
|
||||
In the document body, the relation types are used on visible links, for example on the entries of a directory:
|
||||
In the document body, the relation type is used on visible links, for example on the entries of a directory:
|
||||
|
||||
```html
|
||||
<a rel="simplex-contact" href="https://smp12.simplex.im/a#…">Chat with us</a>
|
||||
<a rel="simplex-group" href="https://smp12.simplex.im/g#…">Ridgeline hikers</a>
|
||||
<a rel="simplex" href="https://smp12.simplex.im/a#…">Chat with us</a>
|
||||
<a rel="simplex" href="https://smp12.simplex.im/g#…">Acme customers</a>
|
||||
```
|
||||
|
||||
### HTTP
|
||||
|
||||
```
|
||||
Link: <https://smp12.simplex.im/c#…>; rel="simplex-channel"; hreflang="en"; title="Ridgeline updates"
|
||||
Link: <https://smp12.simplex.im/a#…>; rel="simplex-contact"; hreflang="en"; title="Ask Ridgeline"
|
||||
Link: <https://smp12.simplex.im/c#…>; rel="simplex"; hreflang="en"; title="Acme news"
|
||||
Link: <https://smp12.simplex.im/a#…>; rel="simplex"; hreflang="en"; title="Ask Acme"
|
||||
```
|
||||
|
||||
## Well-known URI
|
||||
@@ -163,8 +153,8 @@ A site omits the lists it does not use.
|
||||
"channels": [
|
||||
{
|
||||
"link": "https://smp12.simplex.im/c#…",
|
||||
"name": "#ridgeline.simplex",
|
||||
"title": "Ridgeline updates",
|
||||
"name": "#acme.simplex",
|
||||
"title": "Acme news",
|
||||
"lang": "en",
|
||||
"audience": ["people", "agents"],
|
||||
"changeFrequency": "weekly"
|
||||
@@ -173,15 +163,15 @@ A site omits the lists it does not use.
|
||||
"groups": [
|
||||
{
|
||||
"link": "https://smp12.simplex.im/g#…",
|
||||
"title": "Ridgeline hikers",
|
||||
"title": "Acme customers",
|
||||
"lang": "en"
|
||||
}
|
||||
],
|
||||
"contacts": [
|
||||
{
|
||||
"link": "https://smp12.simplex.im/a#…",
|
||||
"name": "@ridgeline.simplex",
|
||||
"title": "Ask Ridgeline",
|
||||
"name": "@acme.simplex",
|
||||
"title": "Ask Acme",
|
||||
"lang": "en",
|
||||
"audience": ["agents"],
|
||||
"business": true,
|
||||
@@ -194,7 +184,7 @@ A site omits the lists it does not use.
|
||||
## Processing
|
||||
|
||||
- A consumer MUST ignore unknown fields and unknown `audience` values.
|
||||
- A consumer MUST ignore a link of a type other than the one its relation type or its list requires.
|
||||
- A consumer MUST ignore a `simplex` link that is not a channel, group or contact address link, and an entry of `simplex.json` whose link is of a type other than its list requires.
|
||||
- The values on the website are hints. The data retrieved with the link is authoritative: an audience, an update frequency, the business flag or protocols declared there [AGENTS] take precedence over the website's values.
|
||||
- A consumer MAY connect by `link` or by `name`. Resolving a name reveals interest in it to one names router, and verifies that the name's record and the profile's claim match [NAMES].
|
||||
|
||||
@@ -207,29 +197,19 @@ A site omits the lists it does not use.
|
||||
|
||||
## Privacy considerations
|
||||
|
||||
- The relation types and the well-known document are intended for owners who want to be reachable, such as channels, communities, businesses and services, and for pages that describe them, such as directories.
|
||||
- The relation type and the well-known document are intended for owners who want to be reachable, such as channels, communities, businesses and services, and for pages that describe them, such as directories.
|
||||
- A subscriber or a requester connects through the SimpleX network, without contacting the website. Retrieving a page or the well-known document is an ordinary web request.
|
||||
|
||||
## IANA considerations
|
||||
|
||||
### Link relation types registration
|
||||
### Link relation type registration
|
||||
|
||||
Three registrations in the "Link Relation Types" registry [RFC8288]:
|
||||
One registration in the "Link Relation Types" registry [RFC8288]:
|
||||
|
||||
- Relation Name: `simplex-channel`
|
||||
- Description: Refers to a SimpleX channel of the owner of the link context, or described by the link context.
|
||||
- Reference: https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-channel
|
||||
- Notes: The target is a SimpleX channel link [AGENT], with the `https` scheme or the provisionally registered `simplex` scheme.
|
||||
|
||||
- Relation Name: `simplex-group`
|
||||
- Description: Refers to a SimpleX group of the owner of the link context, or described by the link context.
|
||||
- Reference: https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-group
|
||||
- Notes: The target is a SimpleX group link [AGENT], with the `https` scheme or the provisionally registered `simplex` scheme.
|
||||
|
||||
- Relation Name: `simplex-contact`
|
||||
- Description: Refers to a SimpleX contact address of the owner of the link context, or described by the link context.
|
||||
- Reference: https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-contact
|
||||
- Notes: The target is a SimpleX contact address link [AGENT], with the `https` scheme or the provisionally registered `simplex` scheme.
|
||||
- Relation Name: `simplex`
|
||||
- Description: Refers to a SimpleX channel, group or contact address of the owner of the link context, or described by the link context.
|
||||
- Reference: https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex
|
||||
- Notes: The target is a SimpleX short link [AGENT] of a channel, a group or a contact address, with the `https` scheme or the provisionally registered `simplex` scheme.
|
||||
|
||||
### Well-known URI registration
|
||||
|
||||
@@ -243,35 +223,19 @@ One registration in the "Well-Known URIs" registry [RFC8615]:
|
||||
|
||||
## HTML link type extensions
|
||||
|
||||
The HTML standard requires extension link types to be registered on the microformats page "existing-rel-values" [HTML] [MF-REL]. The entries:
|
||||
The HTML standard requires extension link types to be registered on the microformats page "existing-rel-values" [HTML] [MF-REL]. The entry:
|
||||
|
||||
- Keyword: `simplex-channel`
|
||||
- Keyword: `simplex`
|
||||
- Effect on `link`: Hyperlink
|
||||
- Effect on `a`, `area`: Hyperlink
|
||||
- Effect on `form`: not allowed
|
||||
- Brief description: Refers to a SimpleX channel of the page's owner, or described by the page.
|
||||
- Specification: https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-channel
|
||||
- Status: proposed
|
||||
|
||||
- Keyword: `simplex-group`
|
||||
- Effect on `link`: Hyperlink
|
||||
- Effect on `a`, `area`: Hyperlink
|
||||
- Effect on `form`: not allowed
|
||||
- Brief description: Refers to a SimpleX group of the page's owner, or described by the page.
|
||||
- Specification: https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-group
|
||||
- Status: proposed
|
||||
|
||||
- Keyword: `simplex-contact`
|
||||
- Effect on `link`: Hyperlink
|
||||
- Effect on `a`, `area`: Hyperlink
|
||||
- Effect on `form`: not allowed
|
||||
- Brief description: Refers to a SimpleX contact address of the page's owner, or described by the page.
|
||||
- Specification: https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex-contact
|
||||
- Brief description: Refers to a SimpleX channel, group or contact address of the page's owner, or described by the page.
|
||||
- Specification: https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/web-discovery.md#simplex
|
||||
- Status: proposed
|
||||
|
||||
## References
|
||||
|
||||
- [AGENT] SimpleX Agent protocol, connection links: https://github.com/simplex-chat/simplexmq/blob/stable/protocol/agent-protocol.md#connection-link-1-time-invitation-and-contact-address
|
||||
- [AGENT] SimpleX Agent protocol, short connection links: https://github.com/simplex-chat/simplexmq/blob/stable/protocol/agent-protocol.md#short-connection-link-syntax
|
||||
- [AGENTS] Agent protocols over SimpleX: [agent-protocols.md](https://simplex.chat/docs/protocol/agent-protocols.md)
|
||||
- [BCP47] Tags for Identifying Languages: https://www.rfc-editor.org/info/bcp47
|
||||
- [BUSINESS] Using SimpleX Chat in business: [BUSINESS.md](https://simplex.chat/docs/business.md)
|
||||
|
||||
Reference in new issue
Block a user