me3-protocol
v2.16.0
Published
**The place machines check before acting on a person.**
Readme
me3 Protocol (me.json)
The place machines check before acting on a person.
me.json is a minimal protocol that lets you declare what actions AI agents and services can take on your behalf—and how.
The Problem
Machines are already making decisions about people:
- "Should I book a meeting with this person?"
- "Can I subscribe them to updates?"
- "How should I introduce them?"
Without an authoritative source, they guess. They scrape. They get it wrong.
Schema.org describes pages. me.json declares people—their identity, their preferences, and their intents.
The Solution: Intents, Services, and Actions
The core of me.json is a machine-readable contract:
intentsdeclare what is possibleservicesdescribe the offers a person providesactionsmake invocation explicit for agents
Example:
{
"version": "0.1",
"name": "Jane Doe",
"bio": "Creative Director at Studio X",
"business": {
"positioningStatement": "I help early-stage founders with unclear positioning by turning their expertise into a sharper offer.",
"audience": "early-stage founders",
"primaryProblem": "unclear positioning",
"solution": "turning their expertise into a sharper offer",
"targetMarket": "early-stage founders",
"primaryOutcome": "clarity on the offer and next step"
},
"services": [
{
"id": "discovery-call",
"title": "Discovery Call",
"description": "A first conversation to explore fit.",
"sessionType": "1:1",
"duration": 30,
"price": 0,
"currency": "EUR",
"whoItsFor": ["founders", "coaches"],
"outcomes": ["clarity", "next steps"],
"availabilityMode": "calendar",
"status": "active"
}
],
"intents": {
"subscribe": {
"enabled": true,
"title": "Design Weekly",
"description": "Curated design links every Sunday",
"frequency": "weekly"
},
"book": {
"enabled": true,
"title": "30-min Consultation",
"description": "Let's discuss your project",
"duration": 30,
"url": "https://cal.com/janedoe"
}
},
"actions": {
"subscribe": {
"method": "POST",
"url": "https://api.example.com/subscribe",
"requires": ["email"]
},
"checkAvailability": {
"method": "GET",
"url": "https://api.example.com/book/janedoe/slots{?date}",
"requires": ["date"]
}
}
}Without me.json: An AI asked "Can I book a call with Jane?" has to guess, scrape her site, or fail.
With me.json: The AI reads intents.book, sees the relevant services, and can use actions.checkAvailability or actions.subscribe directly.
That's the protocol's value: authority before action.
Supported Intents
| Intent | Purpose | Key Fields |
| :---------- | :--------------------------- | :--------------------------------------------------- |
| subscribe | Newsletter/updates signup | enabled, title, description, frequency |
| book | Meeting/consultation booking | enabled, title, description, url, duration |
More intents (like contact for routing preferences) are planned.
Structured Services
services helps agents explain fit before taking action.
| Field | Purpose |
| :---- | :------ |
| id | Stable identifier for the service |
| title | Human-facing service name |
| description | Short summary of the offer |
| sessionType | Delivery type such as 1:1 or group |
| duration | Session length in minutes |
| price / currency | Pricing metadata |
| whoItsFor | Audience descriptors |
| outcomes | Expected benefits or next steps |
| availabilityMode | How availability is managed |
| status | Whether the service is currently active |
Business Context
business gives agents a compact, explicit summary of the offer they should understand before they act.
| Field | Purpose |
| :---- | :------ |
| positioningStatement | Canonical offer sentence agents should use as source context |
| audience | Human-facing description of the ideal client or audience |
| primaryProblem | Core pain point, blocker, or job-to-be-done |
| solution | How the offer helps or what it provides |
| targetMarket | Tight target-market label for routing and positioning |
| primaryOutcome | Main progress the buyer is hiring the offer to create |
Explicit Actions
actions lets a profile describe exactly how an agent should invoke something.
| Field | Purpose |
| :---- | :------ |
| method | HTTP method such as GET or POST |
| url | Endpoint URL |
| requires | Fields an agent must gather before calling |
| description | Human-readable action summary |
Full Schema
Beyond intents, me.json includes identity and presentation fields:
| Field | Type | Required | Description |
| :--------- | :------- | :------- | :--------------------------------------------------- |
| version | string | Yes | Protocol version (currently "0.1"). |
| name | string | Yes | Display name. |
| handle | string | No | Preferred username/handle. |
| bio | string | No | Short bio (max 500 chars). |
| avatar | string | No | Profile picture URL. |
| banner | string | No | Header/banner image URL. |
| location | string | No | Public display location (e.g., "Berlin" or "Remote"). |
| locationData | object | No | Approximate public place data for local discovery; stores town/city-level coordinates, precision, country code, and lookup source metadata. |
| links | object | No | Social links (website, github, twitter, etc.). |
| buttons | array | No | Call-to-action buttons for human visitors. Add as many as you need. |
| pages | array | No | Custom content pages (markdown). |
| business | object | No | Compact site/business context for agents. |
| services | array | No | Structured services or offerings for agents. |
| intents | object | No | Machine-actionable declarations (see above). |
| actions | object | No | Explicit action descriptors for agents. |
| footer | object | No | Footer config (or false to hide). |
See examples/full.json for a complete example.
Hosting & Discovery
Your me.json must be publicly accessible at:
- Primary:
https://yourdomain.com/me.json - Fallback:
https://yourdomain.com/.well-known/me
Requirements
- HTTPS only
- CORS enabled: Serve with
Access-Control-Allow-Origin: *so browser-based agents can read it - Content-Type:
application/json
What me.json is NOT
- NOT authentication — This is public data. No logins, no private keys.
- NOT a social network — No feeds, no likes, no central server.
- NOT a platform — Host it anywhere: GitHub Pages, Vercel, your own server.
- NOT reputation — No scores, rankings, or verification.
Usage
Install
npm install me3-protocolValidate
import { validateProfile, parseMe3Json } from "me3-protocol";
const result = validateProfile(profileData);
if (!result.valid) {
console.error(result.errors);
}JSON Schema
A standard JSON Schema is available at schema.json.
Versioning
- Current version:
0.1 - Stability: Additive changes only. Breaking changes require a version bump.
- Extensions: Use
businessfor site/business context andlinksfor lightweight presentation extensions.
