D
Drip — MPP Grade D
substacknewsletternewsletterspodcastsblogarticlearticlespodcastmediafinancefinancial-analysisinvestinginvestment-researchtradingmarketsstocksequitiesstock-picksresearchmicropayments
Preview responses and set spending limits for this service through use.mpp.land
Free budget controls, response samples, and reliability routing.
On-chain Activity
3,854
Total txs
232
7d txs
$20.49
7d volume
$290.66
Total volume
23
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
5 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/search
- Missing 402 response declaration on GET /api/v1/publications/{publicationSlug}
- Endpoint GET /api/v1/search returned 200 without payment
Paid Operations (7)
GET /api/v1/search dynamic
Search premium financial newsletter and podcast 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-30). |
| 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 newsletters, podcasts, and 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/search dynamic
Search publications, newsletters, podcasts, and authors.
- Amount
- dynamic
- Currency
- -
- Method
- -
- Intent
- -
Non-standard x-payment-info fields:
authMode: none
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| q | query | string | Yes | Publication, author, podcast show, newsletter, slug, or site query. |
Response Schema (200)
{
"$ref": "#/components/schemas/PublicationSearchResponse"
}
GET /api/v1/publications/{publicationSlug} dynamic
Get one publication with recent posts.
- 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. |
| limit | query | integer | No | Maximum number of posts returned. |
Response Schema (200)
{
"$ref": "#/components/schemas/PublicationDetail"
}
GET /api/v1/publications/{publicationSlug}/{postSlug} dynamic
Get synthesized article or podcast post summary (paid).
Returns post metadata and synthesized summary after payment.
- 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:USDC description:USDC exact x402 on Base in token smallest units (floor in discovery); per-post USD follows the live 402 challenge. intent:charge method:x402 network:eip155:8453 recipient:0xBF22b6DdB5A08c823856A779f1004eEa60C5aB92 scheme:exact] 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_61Umz1FUfXxChDA5oA6Umz1EM7SQ1AjJpNQxiSGWWUSe paymentMethodTypes:[card link]] recipient:profile_61Umz1FUfXxChDA5oA6Umz1EM7SQ1AjJpNQxiSGWWUSe]] 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/PaidPublicationPost"
}
POST /api/v1/publications/{publicationSlug}/{postSlug} dynamic
Unlock post via sponsored wallet (paid, requires auth).
Unlocks a paid post using a sponsored wallet — no x402/MPP client required. Authenticates via Bearer token (API key or session). Returns the same response shape as GET with a paymentInfo field.
- Amount
- dynamic
- Currency
- -
- Method
- sponsored
- Intent
- -
- 402 Declared
- Yes
Non-standard x-payment-info fields:
authMode: required protocols: [sponsored]
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 | Yes | Bearer token (API key starting with pk_drip_ or session token). |
Response Schema (200)
{
"$ref": "#/components/schemas/PaidPublicationPost"
}
GET /api/v1/stock-picks dynamic
List stock-picker calls for one day (paid).
Returns structured stock-picker calls for AI-agent consumption. Covers one UTC effective calendar day, not a range. Defaults to latest day with picks. Use `date=YYYY-MM-DD` for a specific day or `period=latest` as an explicit alias. Do not send both. Rows without `publishedAt` may use extraction time internally. Returns 404 when no picks exist for the resolved day — do not pay on 404.
- 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:USDC description:USDC exact x402 on Base in token smallest units (floor in discovery); per-post USD follows the live 402 challenge. intent:charge method:x402 network:eip155:8453 recipient:0xBF22b6DdB5A08c823856A779f1004eEa60C5aB92 scheme:exact] 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_61Umz1FUfXxChDA5oA6Umz1EM7SQ1AjJpNQxiSGWWUSe paymentMethodTypes:[card link]] recipient:profile_61Umz1FUfXxChDA5oA6Umz1EM7SQ1AjJpNQxiSGWWUSe]] price: map[currency:USD max:10.00 min:0.1] protocols: [x402 mpp]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| 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). |
| date | query | string | No | UTC effective calendar day to return. Mutually exclusive with `period`. When omitted, the server resolves the latest day with picks. |
| period | query | string | No | When `latest`, same as omitting `date` (latest effective day with picks). Mutually exclusive with `date`. |
| limit | query | integer | No | Maximum number of stock-pick calls returned (1-500). Defaults to 200. |
Response Schema (200)
{
"$ref": "#/components/schemas/PublicStockPicksResponse"
}
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 (68ms)
- Challenge
- Reachable (1750ms)
- Last Checked
Schema Completeness
- Paid Operations
- 7
- With Input Schema
- 0
- With Description
- 7
7 missing schema
- GET /api/v1/search
- GET /api/v1/publications
- GET /api/v1/publications/search
- GET /api/v1/publications/{publicationSlug}
- GET /api/v1/publications/{publicationSlug}/{postSlug}
- POST /api/v1/publications/{publicationSlug}/{postSlug}
- GET /api/v1/stock-picks
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
- 42436 bytes
- Document Hash
- 2e99aa02f316fe71b85b300f7b6a8f89cc7c25cfcfe22dc2ca4e7e3ebb5a86ff
Version History (72 snapshots)
Grade: C (62%) → D (54%)
Grade: D (54%) → C (62%)
Grade: C (62%) → D (54%)
Grade: D (54%) → C (62%)
- removed endpoint: GET /api/publications/posts
- removed endpoint: POST /api/v1/publications/{publicationSlug}
Grade: C (60%) → D (54%)
- 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/publications/search
- new endpoint: POST /api/v1/publications/{publicationSlug}/{postSlug}
- document hash changed (no semantic differences detected)
Grade: C (60%) → F (13%)
- document hash changed (no semantic differences detected)
- new endpoint: GET /api/v1/stock-picks
- 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)
- 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 |
| 2026-05-28 | C | 60% | 65ms | Up |
| 2026-05-29 | C | 60% | 223ms | Up |
| 2026-05-30 | C | 60% | 218ms | Up |
| 2026-05-31 | C | 60% | 189ms | Up |
| 2026-06-01 | C | 60% | 184ms | Up |
| 2026-06-02 | C | 60% | 470ms | Up |
| 2026-06-03 | C | 60% | 79ms | Up |
| 2026-06-04 | C | 60% | 220ms | Up |
| 2026-06-05 | C | 60% | 167ms | Up |
| 2026-06-06 | C | 60% | 103ms | Up |
| 2026-06-07 | C | 60% | 189ms | Up |
| 2026-06-08 | C | 60% | 174ms | Up |
| 2026-06-09 | C | 60% | 194ms | Up |
| 2026-06-10 | C | 60% | 201ms | Up |
| 2026-06-11 | C | 60% | 232ms | Up |
| 2026-06-12 | C | 60% | 82ms | Up |
| 2026-06-13 | C | 60% | 251ms | Up |
| 2026-06-14 | C | 60% | 198ms | Up |
| 2026-06-15 | C | 60% | 215ms | Up |
| 2026-06-16 | C | 60% | 170ms | Up |
| 2026-06-17 | C | 60% | 182ms | Up |
| 2026-06-18 | C | 60% | 201ms | Up |
| 2026-06-19 | D | 54% | 61ms | Up |
| 2026-06-20 | D | 54% | 272ms | Up |