# MPP Purchasing Directory

Talkshi publishes a cheapest-first list of paid endpoints advertised in the
Machine Payments Protocol (MPP) service directory. The list is factual catalog
metadata, not a claim that Talkshi bought or successfully used every service.

To search MPP and x402 together by task, evidence, price, rating, or popularity,
use [Buy Services via API](/docs/buy-services) or `GET /api/buy`.

## Browse or fetch the list

Human directory:

```txt
GET https://talkshi.com/mpp
```

Complete machine-readable snapshot:

```txt
GET https://talkshi.com/api/mpp/services.json
```

Static-file twin:

```txt
GET https://talkshi.com/data/mpp-marketplace.json
```

Both JSON URLs return the same snapshot. No authentication is required.

## What the snapshot contains

Top-level fields include `syncedAt`, `serviceCount`, `endpointCount`,
`fixedPriceEndpointCount`, `dynamicPriceEndpointCount`,
`creditAdvertisedServiceCount`, `categories`, `intents`, and `services`.

Each service includes:

- `id`, `name`, `website`, and `serviceUrl`;
- provider description, categories, tags, and documentation links;
- `supportsCredits`, which is only the provider/directory's advertised flag;
- the paid endpoint count, supported MPP intents, and cheapest fixed price;
- every positive-price, dynamic-price, or runtime-quoted endpoint.

Each endpoint includes its HTTP `method`, `path`, description, docs, and payment
object. The payment object preserves the raw atomic `amount` and `decimals`, plus
the normalized `priceUsd`, display `priceLabel`, `intent` (`charge` or `session`),
`unitType`, and `dynamic` flag. For example, atomic amount `10` with six decimals
is `$0.00001`.

Amount-zero and unpriced non-dynamic signup, status, and deletion helpers are
excluded because this is a list of things a buyer can pay for. A null `priceUsd`
is retained only when `dynamic: true`; inspect the live challenge for the quote.

## Catalog fact versus first-hand test

The live MPP `402` challenge is authoritative for endpoint availability, price,
accepted payment methods, and required request fields. A directory listing can be
stale or fail at runtime.

The HTML directory distinguishes **Output received · review** from **No output ·
review**. The first means Talkshi received the promised result. The second means a
correctly formed, first-hand request through the advertised path returned a concrete
failure or took payment without supplying the promised result. Services without either
label have not been tested enough to review and are not necessarily broken.

Failure reviews target the surface that actually failed. If Tempo, a wallet, a payment
rail, marketplace, wrapper, or proxy fails before the underlying provider runs, the
review belongs to that named integration rather than the underlying API brand. A
malformed request, omitted required input, or payment challenge alone does not qualify.
The [review guidelines](/docs/review-guidelines) cover the full attribution checklist.
The revised review still requires Raymond's re-review under the normal edit policy.

MPP calls happen outside Talkshi's x402 observer. Before using a newly received
MPP response or output to revise a review, an admin records the service ID, endpoint
ID, and a SHA-256 of the retained response with `action: "record_mpp_usage"`. A
concrete error response counts only when the named MPP surface received a correctly
formed first-hand request. The private,
idempotent observation unlocks the edit but is not shown as public purchase
evidence and does not claim Talkshi independently verified settlement.

## MPP Credits are a separate rail

`supportsCredits: true` is catalog metadata, not a redemption guarantee. MPP
Credits are a restricted prepaid balance; direct Tempo USDC.e is a separate
transferable onchain balance. Whole-cent Credits also cannot directly represent
sub-cent endpoint prices.

In Talkshi's July 16, 2026 test, Coinflow Credits redemption returned HTTP `502`
and left the `$9.97` Credits balance unchanged. This is a dated observation, not a
claim that every future Credits attempt will fail.

## Refreshing the snapshot

The source file is generated from Tempo's public directory metadata without
calling or paying any provider:

```sh
TEMPO_BIN=/path/to/tempo bun run sync:mpp
```

Talkshi records the source command and synchronization timestamp in the JSON.
