{"id":51222370,"url":"https://github.com/tempoxyz/mpp-tools","last_synced_at":"2026-06-28T08:03:51.741Z","repository":{"id":361789032,"uuid":"1255838786","full_name":"tempoxyz/mpp-tools","owner":"tempoxyz","description":"Tooling and test suites for managing MPP SDKs and other ecosystem primitives","archived":false,"fork":false,"pushed_at":"2026-06-15T04:33:05.000Z","size":199,"stargazers_count":8,"open_issues_count":13,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T06:25:25.696Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tempoxyz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-01T08:07:59.000Z","updated_at":"2026-06-08T18:04:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tempoxyz/mpp-tools","commit_stats":null,"previous_names":["tempoxyz/mpp-tools"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tempoxyz/mpp-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempoxyz%2Fmpp-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempoxyz%2Fmpp-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempoxyz%2Fmpp-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempoxyz%2Fmpp-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tempoxyz","download_url":"https://codeload.github.com/tempoxyz/mpp-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tempoxyz%2Fmpp-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34881390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-28T08:03:50.809Z","updated_at":"2026-06-28T08:03:51.729Z","avatar_url":"https://github.com/tempoxyz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr\u003e\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://mpp.dev\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/tempoxyz/mpp/refs/heads/main/public/lockup-light.svg\"\u003e\n      \u003cimg alt=\"Machine Payments Protocol\" src=\"https://raw.githubusercontent.com/tempoxyz/mpp/refs/heads/main/public/lockup-dark.svg\" width=\"auto\" height=\"120\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n# mpp-tools\n\nOpen-source monorepo for tooling around the [\"Payment\" HTTP Authentication Scheme](https://paymentauth.org) (MPP).\n\n[![Website](https://img.shields.io/badge/website-mpp.dev-black)](https://mpp.dev)\n[![Protocol](https://img.shields.io/badge/protocol-paymentauth.org-blue)](https://paymentauth.org)\n[![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n\n[MPP](https://mpp.dev) lets any client -- agents, apps, or humans -- pay for any service in the same HTTP request. It standardizes [HTTP 402](https://mpp.dev/protocol/http-402) with an open [IETF specification](https://paymentauth.org), so servers can charge and clients can pay without API keys, billing accounts, or checkout flows.\n\n`mpp-tools` provides tooling and test suites for managing MPP SDKs and other ecosystem primitives. \n\n## Documentation\n\n- [Conformance suite](./conformance/README.md)\n- [SDK specification](./SPEC.md)\n- [Protocol overview](https://mpp.dev/protocol/)\n- [IETF wire specification](https://paymentauth.org)\n\n## Quick Start\n\n```bash\ncd conformance\nmake all\n```\n\nThis installs the pinned SDK releases, runs the vector suite, and runs the end-to-end 402 flow suite.\n\nRun individual stages while developing:\n\n```bash\nmake install      # install pinned SDKs and adapter dependencies\nmake test         # run vector conformance against all adapters\nmake flow         # run end-to-end 402 flow conformance\n```\n\n## Repository Layout\n\n```text\nmpp-tools/\n├── conformance/          # Cross-SDK conformance test suite\n│   ├── adapters/         # Per-language CLI adapters\n│   ├── flows/            # End-to-end 402 flow tests\n│   ├── golden/           # TypeScript golden adapter\n│   ├── scripts/          # Test runners and helpers\n│   └── vectors/          # Hand-authored protocol vectors\n├── SPEC.md               # SDK conformance specification\n└── README.md\n```\n\n## Conformance Suite\n\nThe conformance suite ensures every SDK produces identical protocol outputs for the same inputs. No SDK is privileged: checked-in JSON vectors are the source of truth, and each SDK is exercised through a thin CLI adapter with a shared request/response contract.\n\n```text\nvectors/*.json -\u003e vector_runner.py -\u003e adapter -\u003e pass/fail\nflows/*.json   -\u003e flow_runner.py   -\u003e adapter -\u003e pass/fail\n```\n\nThe suite covers:\n\n- `WWW-Authenticate: Payment ...` challenge parsing and formatting\n- `Authorization: Payment ...` credential parsing and formatting\n- `Payment-Receipt: ...` receipt parsing and formatting\n- base64url encoding and decoding\n- deterministic challenge ID generation\n- client-to-server HTTP 402 payment flows\n\nSee [conformance/README.md](./conformance/README.md) for adapter commands, vector schemas, flow tests, prerequisites, and targeted test commands.\n\n## Validated SDKs\n\nThe harness validates the SDKs declared by the adapter manifests in `conformance/adapters/`. Each SDK follows the shared [SDK specification](./SPEC.md). The harness installs pinned package releases from each package manager, and Dependabot opens SDK bump PRs when newer versions are available.\n\n| SDK | Language | Repository | Package |\n|-----|----------|------------|---------|\n| `mppx` | TypeScript | [wevm/mppx](https://github.com/wevm/mppx) | [npm](https://www.npmjs.com/package/mppx) |\n| `mpp` | Rust | [tempoxyz/mpp-rs](https://github.com/tempoxyz/mpp-rs) | [crates.io](https://crates.io/crates/mpp) |\n| `pympp` | Python | [tempoxyz/pympp](https://github.com/tempoxyz/pympp) | [PyPI](https://pypi.org/project/pympp/) |\n| `mpp-go` | Go | [tempoxyz/mpp-go](https://github.com/tempoxyz/mpp-go) | [Go module](https://pkg.go.dev/github.com/tempoxyz/mpp-go) |\n| `mpp-rb` | Ruby | [stripe/mpp-rb](https://github.com/stripe/mpp-rb) | [RubyGems](https://rubygems.org/gems/mpp-rb) |\n| `mpp-java` | Java | [stripe/mpp-java](https://github.com/stripe/mpp-java) | JitPack Maven |\n\n## Updating SDK Pins\n\n```bash\ncd conformance\nmake update-locks\nmake all\n```\n\nSDK versions are pinned in package-manager manifests and lockfiles:\n\n| Language | Package | Pin |\n|----------|---------|-----|\n| TypeScript | `mppx` | `package.json` / `package-lock.json` |\n| Rust | `mpp` | `adapters/rust/Cargo.toml` / `Cargo.lock` |\n| Python | `pympp` | `adapters/python/pyproject.toml` / `uv.lock` |\n| Go | `github.com/tempoxyz/mpp-go` | `adapters/go/go.mod` / `go.sum` |\n| Ruby | `mpp-rb` | `adapters/ruby/Gemfile` / `Gemfile.lock` |\n| Java | `com.github.stripe:mpp-java` | `adapters/java/build.gradle` / `gradle.lockfile` |\n\n## Protocol\n\nBuilt on the [\"Payment\" HTTP Authentication Scheme](https://paymentauth.org), an open specification proposed to the IETF. See [mpp.dev/protocol](https://mpp.dev/protocol/) for the full protocol overview, or the [IETF specification](https://paymentauth.org) for the wire format.\n\n## Contributing\n\n```bash\ngit clone https://github.com/tempoxyz/mpp-tools\ncd mpp-tools/conformance\nmake all\n```\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for the full workflow. When adding protocol behavior, add or update the relevant vectors and verify every adapter before opening a PR.\n\n## Security\n\nSee [SECURITY.md](./SECURITY.md) for reporting vulnerabilities.\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftempoxyz%2Fmpp-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftempoxyz%2Fmpp-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftempoxyz%2Fmpp-tools/lists"}