C

DripStack API — MPP Grade C

https://dripstack.xyz 60% (50/82)
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

NameInTypeRequiredDescription
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

NameInTypeRequiredDescription
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

NameInTypeRequiredDescription
publicationSlug path string Yes Publication slug, which is the normalized host.

Input Schema

FieldTypeRequiredDescription
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

NameInTypeRequiredDescription
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

NameInTypeRequiredDescription
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