MySignals

Editor's Draft: 30 January 2026

This version:
https://mysignals.org/spec/
Latest published version:
https://mysignals.org/spec/
History:
https://github.com/MeeFoundation/my-signals-website
Editors:
Paul Trevithick (Mee Foundation)
Alexey Pepeskul (Swift Invention)
Feedback:
https://github.com/MeeFoundation/my-signals-website (pull requests, new issue, open issues)

Abstract

This document defines a handshake process wherein a person and a service provider (or other person) exchange signals to negotiate the terms of their interactions. The handshake is conducted between the person's agent and the service provider’s website/app.

Status of This Document

Work in Progress

This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than a work in progress.

1.Introduction

This section is non-normative.

The internet has evolved to exhibit a power asymmetry between organizations and individuals--an asymmetry that comes at the expense of the autonomy, agency, and privacy of the individual. The power imbalance between internet technology users and service providers (businesses and governments) has been recognized for some time. It was described over a decade ago by the World Economic Forum [WEF2014]:

World Economic Forum, 2014
An asymmetry of power exists today between institutions and individuals—created by an imbalance in the amount of information about individuals held by, or that is accessible to, industry and governments, and the lack of knowledge and ability of the same individuals to control the use of that information.

1.1 Background

For the past two decades, hundreds of independent developers, and organized groups have explored different paths to restore the power imbalance we've described. A main thrust of this work is the development personal agents and other kinds of “empowerment” tools that work “on the individual's side” [ProjectVRM] and represent their interests.

Possibly the simplest example of “empowerment” tooling is a browser that implements the Global Privacy Control [GPC]. The GPC is signal from the browser communicates the person's Do Not Sell or Share request to the service provider. This signal is legally binding under the California Consumer Privacy Act, and similar state privacy laws that allow users to opt out of data sales or the use of their data for cross-context targeted advertising. The GPC signal was implemented by adding a Sec-GPC: 1 field to user agent HTTP header in HTTP Request messages sent to the web server. For example:

GET /something/here HTTP/2
Host: example.com
Sec-GPC: 1

1.2 Limitations of Current Approaches

Implementing a handshake using custom Sec-* header field for each type of signal has disadvantages:

1.3 Purpose and Characteristics

MySignals is a handshake process between a person's agent and a service provider website/app. It is an extensible communications framework that allows developers to define specific kinds of signals (signaltypes) that can be exchanged. It defines a common namespace for these signaltypes and a syntax for passing parameters. During this handshake each side conveys the signaltypes it supports. It has these characteristics:

1.4 Use Cases

The MySignals framework is designed to support a range of current and anticipated handshaking/signaling needs. Use cases include:

2.Definitions

A signaltype is string that uniquely specifies a type of signal that can be sent by a person to a service provider. Implementers of this spec MUST use signaltypes defined in section 4 below. The semantics of each signaltype are defined by an implementer--they are outside of the MySignals spec. When a signal of a given signaltype is sent other parameters MAY be sent along with it. The definition and semantics of these parameters are also out of scope of the MySignals spec.

A set of one or more parameters MAY be passed along with a signal by including a reference to a Signal Parameters Resource (SPR) that contains these parameters.

3.Handshake Process

This section describes the three step process when implemented over HTTP.

3.1 Step 1: Initiate MySignals Framework

The user agent MUST insert a Sec-MS header field with a value of 1, for example:

GET /something/here HTTP/2
Host: example.com
Sec-MS: 1

3.2 Step 2: Acknowlege MySignals

The server MUST respond with an Accept-MS header field if it supports the MySignals framework. If it supports the MySignals frameork the Accept-MS field MUST specifying one or more supported signaltypes:

HTTP/1.1 200 OK
Accept-MS: type=signaltype1; type=signaltype2; ... type=signaltypeN

3.3 Step 3: Send signal(s)

The user agent MUST send one or more MySignals headers specifying the signaltype string value along with an optional Signal Parameters Resource (SPR) URL value. The example below shows a signaltype of "OpenIDConnect" and an SPR URL "https://google.com/mysignals.json":

GET /something/here HTTP/2
Host: example.com
Sec-MS type=OpenIDConnect; SPR="https://google.com/mysignals.json"

4.Signaltypes

In step 3 when the agent is sending a specific signaltype, an optional reference (URL) to a Signal Parameteres Resource MAY be included. The value of signaltype MUST be one of:

5.Signal Parameters Resource reference

In step 3 when the agent is sending a specific signaltype, an optional URL reference to a Signal Parameters Resource (SPR) MAY be included.

6.Signal Parameters Resource (SPR)

An SPR is a [JSON] format resource that contains additional parameters to pass with a signal. It MUST contain the title and version fields. The rest of the fields are determined by the specifics of the signaltype. Each signaltype has its own section of the SPR (e.g. "[SIOPv2]") followed by one or more signaltype-specific fields.

7.Example Signal Parameters Resource

The following example shows a SPR containing parameters for the "SIOPv2" signaltype. Two URL-valued parameters are "image" and "SIOPAuthorized".

{
  "title": "Signal Parameters Resource",
  "version": "1.0",
  "SIOPv2": {
    "image": "https://mee.foundation/continue-with-mee-smartwallet.png",
    "SIOPAuthorized": "https://mee.foundation/authorize"
  }
}

8.Privacy Considerations

To be written
This section will address privacy implications and considerations.

9.Security Considerations

To be written
This section will address security implications and considerations.

10.Automation

To be written
This section will address automation considerations.

11.Conformance

To be written
This section will define conformance requirements.

A.Implementation Considerations

To be written
This appendix will provide implementation guidance and best practices.

B.Acknowledgements

To be written
This appendix will acknowledge contributors to this specification.

C.References

C.1 Normative references

[JSON]
JSON spec. URL: https://www.rfc-editor.org/rfc/rfc8259

C.2 Informative references

[AgeProtect]
AgeProtect paper. URL: https://ageprotect.org
[ClientHints]
URL: https://wicg.github.io/ua-client-hints/
[GPC]
Global Privacy Control. URL: https://globalprivacycontrol.org
[NASCAR]
The "NASCAR problem" in authorization server selection refers to the visual clutter and user confusion when a website presents too many third-party login/identity provider (IdP) buttons (like Google, Facebook, Apple), resembling the crowded sponsorship decals on a NASCAR car. URL: https://apicrazy.com/2014/07/22/nascar-problem-in-authorisation-server-selection/
[IEEEP7012]
IEEE P7012. URL: https://standards.ieee.org/ieee/7012/7192/
[SIOPv2]
URL: https://openid.net/specs/openid-connect-self-issued-v2-1_0.html
[WEF2014]
Rethinking Personal Data: Trust and Context in User-Centred Data Ecosystems, World Economic Forum. URL: https://www3.weforum.org/docs/WEF_RethinkingPersonalData_TrustandContext_Report_2014.pdf