C
DripStack API — MPP Grade C
medianewslettersmicropayments
Preview responses and set spending limits for this service through use.mpp.land
Free budget controls, response samples, and reliability routing.
On-chain Activity
2,802
Total txs
590
7d txs
$54.85
7d volume
$185.37
Total volume
12
Unique payers
0
Unique clients
7-day activity
█▅▃▂▂▂▂
Compliance Checks
All paid ops declare 402 response
MUST
10pt
All x-payment-info valid
MUST
10pt
Challenge has Cache-Control: no-store
MUST
5pt
Challenge digest on POST
SHOULD
3pt
Challenge has expires
SHOULD
3pt
Challenge has Problem Details
SHOULD
2pt
Challenge has required params
MUST
5pt
Challenge has WWW-Authenticate
MUST
5pt
Challenge returns 402
MUST
10pt
Correct Content-Type
MUST
5pt
Has Cache-Control on discovery
SHOULD
5pt
Has input schemas
SHOULD
5pt
Has llms.txt
SHOULD
5pt
Has /openapi.json at root
MUST
10pt
Has required top-level fields
MUST
10pt
Served over HTTPS
MUST
10pt
Uses standard categories
SHOULD
2pt
6 issues
- Missing 402 response declaration on GET /api/v1/search
- Missing 402 response declaration on GET /api/v1/publications
- Missing 402 response declaration on GET /api/v1/publications/{publicationSlug}
- Missing 402 response declaration on POST /api/v1/publications/{publicationSlug}
- Missing 402 response declaration on GET /api/publications/posts
- Endpoint GET /api/v1/search returned 200 without payment
Paid Operations (6)
GET /api/v1/search dynamic
Search imported posts by topic.
- Amount
- dynamic
- Currency
- -
- Method
- -
- Intent
- -
Non-standard x-payment-info fields:
authMode: none
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| q | query | string | Yes | Natural-language query string. |
| limit | query | integer | No | Maximum number of items returned (1-10). |
| mode | query | string | No | Search mode. `fts` is lexical only; `hybrid` blends lexical and semantic. |
Response Schema (200)
{
"$ref": "#/components/schemas/TopicSearchResponse"
}
GET /api/v1/publications dynamic
List publications.
- Amount
- dynamic
- Currency
- -
- Method
- -
- Intent
- -
Non-standard x-payment-info fields:
authMode: none
Response Schema (200)
{
"$ref": "#/components/schemas/ListPublicationsResponse"
}
GET /api/v1/publications/{publicationSlug} dynamic
Get one publication.
- Amount
- dynamic
- Currency
- -
- Method
- -
- Intent
- -
Non-standard x-payment-info fields:
authMode: none
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| publicationSlug | path | string | Yes | Publication slug, which is the normalized host. |
Response Schema (200)
{
"$ref": "#/components/schemas/PublicationDetail"
}
POST /api/v1/publications/{publicationSlug} dynamic
Import one publication.
- Amount
- dynamic
- Currency
- -
- Method
- -
- Intent
- -
Non-standard x-payment-info fields:
authMode: none
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| publicationSlug | path | string | Yes | Publication slug, which is the normalized host. |
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| forceRefresh | boolean | No | When true, re-fetches publication feed even if records exist. |
Response Schema (200)
{
"$ref": "#/components/schemas/ImportPublicationResponse"
}
GET /api/v1/publications/{publicationSlug}/{postSlug} dynamic
Get full post content (paid).
Resolves the post, then returns HTTP 402 until the client pays via MPP and/or x402 on the same response (WWW-Authenticate + PAYMENT-REQUIRED). The challenge amount is the stored per-post price in USD, or at least $0.1 when the post has no source price. Discovery `x-payment-info.offers[]` is advisory; runtime 402 is authoritative.
- Amount
- map[currency:USD max:10.00 min:0.1]
- Currency
- -
- Method
- x402, mpp
- Intent
- -
- 402 Declared
- Yes
Non-standard x-payment-info fields:
authMode: required maxPrice: 10.00 minPrice: 0.1 offers: [map[amount:100000 currency:0x20C000000000000000000000b9537d11c60E8b50 description:Tempo TIP-20 charge in token smallest units (floor in discovery); per-post USD follows the live 402 challenge. intent:charge method:tempo recipient:0xBF22b6DdB5A08c823856A779f1004eEa60C5aB92] map[amount:50 currency:usd description:Card payment via Stripe (fixed list price for this route in discovery). intent:charge method:stripe methodDetails:map[networkId:profile_61UfOfJWKB0zyERauA6UfOfIM2SQinpzz0szg1Bw8Q24 paymentMethodTypes:[card link]]] map[amount:100000 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v description:SPL USDC-style charge in smallest units; discovery shows the catalog floor — actual per-post amount follows the live 402 challenge. intent:charge method:solana recipient:ANUF2xniKdbNZsNpjfFo6v2Cfn5PGAr2T1vq3ELpeapi] map[amount:50 currency:usd description:Card payment via Stripe (fixed list price for this route in discovery). intent:charge method:stripe]] price: map[currency:USD max:10.00 min:0.1] protocols: [x402 mpp]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| publicationSlug | path | string | Yes | Publication slug, which is the normalized host. |
| postSlug | path | string | Yes | Post slug from the publication feed. |
| Authorization | header | string | No | MPP (Payment HTTP Authentication Scheme): after HTTP 402, retry with `Authorization: Payment <credential>`. |
| PAYMENT-SIGNATURE | header | string | No | x402 v2: after HTTP 402, retry with the encoded payment payload from the `PAYMENT-REQUIRED` challenge (same header name as in `@x402/core` HTTP transport). |
Response Schema (200)
{
"$ref": "#/components/schemas/FullPublicationPost"
}
GET /api/publications/posts dynamic
List posts for a publication.
- Amount
- dynamic
- Currency
- -
- Method
- -
- Intent
- -
Non-standard x-payment-info fields:
authMode: none
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| publicationId | query | string | No | Publication id (exact). Use this or publicationTitle. |
| publicationTitle | query | string | No | Case-insensitive substring; must match exactly one publication. |
| page | query | integer | No | - |
| limit | query | integer | No | - |
Response Schema (200)
{
"$ref": "#/components/schemas/ListPublicationPostsResponse"
}
Payment Methods
- Methods
- -
- Intents
- -
- Currencies (discovery)
- -
- Multiple Challenges
- No
Security
- TLS Version
- TLSv1.3
- Challenge ID Unique
- -
- Challenge ID Length
- -
- Digest Binding
- -
Uptime
- Discovery
- Reachable (182ms)
- Challenge
- Reachable (1212ms)
- Last Checked
Schema Completeness
- Paid Operations
- 6
- With Input Schema
- 1
- With Description
- 6
5 missing schema
- GET /api/v1/search
- GET /api/v1/publications
- GET /api/v1/publications/{publicationSlug}
- GET /api/v1/publications/{publicationSlug}/{postSlug}
- GET /api/publications/posts
Documentation
- Homepage
- /
- API Reference
- /openapi.json
- llms.txt
- /llms.txt
Discovery
- OpenAPI URL
- https://dripstack.xyz/openapi.json
- OpenAPI Version
- 3.1.0
- Service Version
- 0.1.0
- Document Size
- 15849 bytes
- Document Hash
- 5d8bbe81341a0f792cbee2a2a2f67dff154f6efe4f5802d233ad28c95585497d
Version History (48 snapshots)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- new endpoint: GET /api/v1/search
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- new endpoint: GET /api/publications/posts
- new endpoint: GET /api/v1/publications
- new endpoint: GET /api/v1/publications/{publicationSlug}
- new endpoint: POST /api/v1/publications/{publicationSlug}
Grade: B (76%) → C (67%)
- document hash changed (no semantic differences detected)
Grade: C (67%) → B (76%)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- removed endpoint: GET /api/publications/posts
- removed endpoint: GET /api/v1/publications
- removed endpoint: GET /api/v1/publications/{publicationSlug}
- removed endpoint: POST /api/v1/publications/{publicationSlug}
Grade: D (54%) → C (67%)
Grade: C (62%) → D (54%)
Grade: D (54%) → C (62%)
Grade: C (62%) → D (54%)
Grade: D (54%) → C (62%)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- new endpoint: GET /api/publications/posts
- new endpoint: GET /api/v1/publications
- new endpoint: GET /api/v1/publications/{publicationSlug}
- new endpoint: POST /api/v1/publications/{publicationSlug}
Grade: C (60%) → D (54%)
- removed endpoint: GET /api/v1/payment-discovery
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- document hash changed (no semantic differences detected)
- new endpoint: GET /api/v1/payment-discovery
- document hash changed (no semantic differences detected)
Grade: B (83%) → C (67%)
Scan snapshots
| Date | Grade | Score | Response | Status |
|---|---|---|---|---|
| 2026-04-10 | B | 83% | 713ms | Up |
| 2026-04-11 | C | 67% | 319ms | Up |
| 2026-04-12 | C | 67% | 197ms | Up |
| 2026-04-13 | C | 67% | 206ms | Up |
| 2026-04-14 | C | 67% | 252ms | Up |
| 2026-04-15 | C | 60% | 54ms | Up |
| 2026-04-16 | C | 60% | 253ms | Up |
| 2026-04-17 | D | 54% | 215ms | Up |
| 2026-04-18 | D | 54% | 212ms | Up |
| 2026-04-19 | D | 54% | 51ms | Up |
| 2026-04-20 | D | 54% | 196ms | Up |
| 2026-04-21 | D | 54% | 206ms | Up |
| 2026-04-22 | D | 54% | 169ms | Up |
| 2026-04-23 | D | 54% | 185ms | Up |
| 2026-04-24 | D | 54% | 203ms | Up |
| 2026-04-25 | D | 54% | 398ms | Up |
| 2026-04-26 | D | 54% | 242ms | Up |
| 2026-04-27 | D | 54% | 182ms | Up |
| 2026-04-28 | D | 54% | 282ms | Up |
| 2026-04-29 | D | 54% | 88ms | Up |
| 2026-04-30 | D | 54% | 186ms | Up |
| 2026-05-01 | D | 54% | 82ms | Up |
| 2026-05-02 | D | 54% | 201ms | Up |
| 2026-05-03 | D | 54% | 400ms | Up |
| 2026-05-04 | D | 54% | 186ms | Up |
| 2026-05-05 | D | 54% | 232ms | Up |
| 2026-05-06 | D | 54% | 190ms | Up |
| 2026-05-07 | D | 54% | 495ms | Up |
| 2026-05-08 | D | 54% | 173ms | Up |
| 2026-05-09 | D | 54% | 149ms | Up |
| 2026-05-10 | D | 54% | 302ms | Up |
| 2026-05-11 | D | 54% | 192ms | Up |
| 2026-05-12 | D | 54% | 151ms | Up |
| 2026-05-13 | C | 60% | 48ms | Up |
| 2026-05-14 | C | 60% | 171ms | Up |
| 2026-05-15 | C | 60% | 180ms | Up |
| 2026-05-16 | C | 60% | 250ms | Up |
| 2026-05-17 | C | 60% | 169ms | Up |
| 2026-05-18 | C | 60% | 161ms | Up |
| 2026-05-19 | C | 60% | 199ms | Up |
| 2026-05-20 | C | 69% | 204ms | Up |
| 2026-05-21 | C | 60% | 615ms | Up |
| 2026-05-22 | C | 60% | 191ms | Up |
| 2026-05-23 | C | 60% | 471ms | Up |
| 2026-05-24 | C | 60% | 196ms | Up |
| 2026-05-25 | C | 60% | 200ms | Up |
| 2026-05-26 | C | 60% | 66ms | Up |
| 2026-05-27 | C | 60% | 184ms | Up |