Skip to content

tempoxyz/mpp



Machine Payments Protocol



mpp

The open protocol for machine-to-machine payments.

Website IETF Spec License

MPP lets any client — agents, apps, or humans — pay for any service in the same HTTP request. It standardizes HTTP 402 with an open IETF specification, so servers can charge and clients can pay without API keys, billing accounts, or checkout flows.

You can get started today by reading the protocol overview, jumping straight to the quickstart, or exploring the SDKs.

What's in this repo

This repository contains the mpp.dev documentation site and service directory.

  • Documentation — quickstart guides, protocol explainers, and SDK references
  • Service Directory — a registry of MPP-enabled services at mpp.dev/services

Development

pnpm install      # Install dependencies
pnpm run dev      # Start development server
pnpm run build    # Production build
pnpm run preview  # Preview production build

Contributing to the service directory

The service directory at mpp.dev/services is curated for live, production-ready MPP services.

Submit a pull request to this repo

If you want your service included in the curated mpp.dev/services list, open a PR and complete this checklist:

Required

  • Your service is live and accepting payments via MPP (not a placeholder or coming-soon)
  • You've added your entry to schemas/services.ts
  • Types pass: pnpm check:types
  • Build succeeds: pnpm build

Recommended

  • Register your service on MPPScan (by Merit Systems) — it follows the standard MPP discovery format and makes your service discoverable by agents immediately, no PR required

Review criteria

We prioritize services that are high quality and novel. We may not approve services that duplicate existing functionality or aren't yet production-ready.

Add a new service

  1. Edit schemas/services.ts — add a new entry to the services array:
{
  id: "my-service",
  name: "My Service",
  url: "https://example.com",
  serviceUrl: "https://api.example.com",
  description: "What your service does.",
  categories: ["ai"],
  integration: "first-party",
  tags: ["llm", "chat"],
  docs: {
    homepage: "https://docs.example.com",
    llmsTxt: "https://docs.example.com/llms.txt",
  },
  provider: { name: "Example Inc.", url: "https://example.com" },
  realm: MPP_REALM,
  intent: "charge",
  payment: TEMPO_PAYMENT,
  endpoints: [
    { route: "POST /v1/completions", desc: "Generate completions", amount: "5000" },
    { route: "GET /v1/models", desc: "List models" },
  ],
}

Contributing

Contributions to documentation, the service directory, and site improvements are welcome.

Pull request checklist

  1. Types pass: pnpm check:types
  2. Build succeeds: pnpm build
  3. Lint passes: pnpm check
  4. E2E tests pass (if touching terminal or interactive components): pnpm test:e2e

Types of contributions

Change type Process
Typo or editorial fix Direct PR to main
New documentation page Follow existing page structure in src/pages/
New service listing Register on MPPScan for immediate discovery; open a PR to include it in the curated mpp.dev/services list
Service update Edit the service entry in schemas/services.ts, regenerate, PR
New component Follow patterns in src/components/
Site configuration Open an issue first for discussion

SDKs

Repository Language
wevm/mppx TypeScript
tempoxyz/pympp Python
tempoxyz/mpp-rs Rust
tempoxyz/mpp-specs IETF specifications

Security

See SECURITY.md for reporting vulnerabilities.

License

Licensed under either of Apache License, Version 2.0 or MIT License at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in these crates by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.