npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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:

  • intents declare what is possible
  • services describe the offers a person provides
  • actions make 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:

  1. Primary: https://yourdomain.com/me.json
  2. 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-protocol

Validate

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 business for site/business context and links for lightweight presentation extensions.