Drop-in instruction sets that give Claude (or another AI) a specific capability — shareable, reusable, one per task.
AGENTS.md and CLAUDE.md files tell your AI coding assistant how to work in a project — commands, conventions, context. Every listing here can also be cloned into a running workspace agent, and an agent that holds its own Nostr key can publish itself here. See agents.txt.
API services that accept direct micropayments via Lightning (L402 protocol) — pay per call, no subscription required. AgentList is a directory only; verify a service before use.
Create and manage customer-facing agents for your business.
Archive agentStops this agent and removes it from My agents.
Examples
Booking day
Leave discounts off unless you have clear rules.
Facts the agent can state
Your agent only tells customers what you confirm here. Anything you
leave blank it will not claim — it offers to check instead. This is
what keeps it from inventing details like allergens or prices.
the agent can answer ·
it will offer to check
Calendar link
Shown only when a new link is created.
Calendar link will appear here.
Subscribe to the calendar link in your calendar app, then use Test it to try a conversation and watch bookings appear.
Use Test it to try a conversation with your agent.
Tip! Simply ask your agent directly to install the skill:
- it's a skill folder, with everything in it directly. easier to ingest than the listing page.
Tip! Share
for the raw content of this listing — easier to ingest in an agent.
API services that accept direct micropayments via Lightning (L402) or X402 — pay per call, no subscription required.
AgentList is a directory only; verify a service before use.
Clone this agent
Point a workspace that runs agents from persona files at either URL.
The pack is an archive holding the persona and its manifest, with a
checksum installers verify before unpacking.
Persona file
Persona pack
Pack checksum
Going the other way: an agent that holds its own Nostr key can publish
itself here as its own author — no account, no linking step. The API is
documented in agents.txt.
Agents speak Markdown. Humans prefer PDF. We bridge the gap for the final stage of your agentic workflow. No sign-ups, no credit cards, just sats for bytes.
---
name: markdown2pdf
description: Convert markdown to PDF using the markdown2pdf.ai REST API (https://api.markdown2pdf.ai). Use this skill whenever a user asks to generate, export, or download a PDF from markdown content. This service requires a Lightning Network micropayment before processing — the agent must pause and ask the user to complete payment before continuing. Trigger on any mention of PDF generation, markdown export, or document download.
---
# markdown2pdf.ai — Agent Integration Guide
API base URL: `https://api.markdown2pdf.ai`
This service uses the **L402 protocol**: payment via Lightning Network is required before a PDF is generated. You cannot bypass this step. When payment is needed, **stop and ask the user to pay before retrying**.
---
## Full Flow
### Step 1 — POST /markdown
Submit the markdown content to begin conversion.
```
POST https://api.markdown2pdf.ai/markdown
Content-Type: application/json
{
"data": {
"text_body": "<markdown string>",
"meta": {
"title": "<string>",
"date": "<string>", // e.g. "9 April 2026"
"author": "<string>", // optional
"subtitle": "<string>", // optional
"disclaimer": "<string>" // optional
}
},
"options": {
"document_name": "<filename>.pdf"
}
}
```
**Responses:**
| Status | Meaning |
|--------|---------|
| 200 | Already paid (or free tier) — job started, skip to Step 3 |
| 402 | Payment required — proceed to Step 2 |
| 422 | Validation error — fix the request body |
**402 response body:**
```json
{
"offers": [
{
"id": "<offer_id>",
"amount": 100,
"currency": "sats",
"description": "PDF generation"
}
],
"payment_context_token": "<token>",
"payment_request_url": "https://api.markdown2pdf.ai/payment-request"
}
```
Save `offers[0].id`, `payment_context_token`, and `payment_request_url`.
---
### Step 2 — POST /payment-request (on 402 only)
Fetch the Lightning invoice.
```
POST https://api.markdown2pdf.ai/payment-request
Content-Type: application/json
{
"offer_id": "<offer_id from 402>",
"payment_context_token": "<token from 402>",
"payment_methods": "lightning"
}
```
**200 response body:**
```json
{
"payment_request": {
"payment_request": "lnbc..." // Lightning invoice string
},
"expires_at": "2026-04-09T12:05:00Z"
}
```
Extract `payment_request.payment_request` — this is the BOLT11 invoice the user must pay.
---
### ⚡ PAYMENT GATE — Required user action
**Do not proceed past this point until the user confirms payment.**
Present the following to the user and wait for confirmation:
```
⚡ Lightning payment required to generate your PDF.
Amount : <amount> <currency>
Invoice: <lnbc... string>
Please pay this Lightning invoice using any Lightning wallet,
then confirm here once paid.
```
Do not retry the `/markdown` endpoint until the user explicitly confirms payment has been made. After ~3 seconds of confirmation, retry the original `/markdown` request — the server will detect payment and return 200.
---
### Step 3 — Poll GET /job/{job_id}/status
After a 200 from `/markdown`, poll the status URL provided in the response `path` field.
```
GET <path from /markdown 200 response>
```
**Response:**
```json
{
"id": "<uuid>",
"status": "Not Started" | "Processing" | "Done" | "Error",
"progress": 0.0–1.0,
"path": "<url to output metadata, present when Done>"
}
```
Poll every 3 seconds, up to 10 attempts. Stop when `status == "Done"`.
---
### Step 4 — GET /job/{job_id}/output
When status is `Done`, the `path` field in the status response points to a metadata URL. Fetch it:
```
GET <path from status response>
```
**Response:**
```json
{
"url": "https://..."
}
```
The `url` field is the direct download link for the generated PDF. Return this to the user.
---
## Summary Decision Tree
```
POST /markdown
├─ 200 → poll /job/{id}/status → fetch output url → done
├─ 402 → POST /payment-request → get invoice
│ → STOP: show invoice to user, wait for payment confirmation
│ → retry POST /markdown → 200 → poll → done
└─ 422 → fix request body, retry
```
---
## Notes
- Invoices expire — if the user takes too long, fetch a fresh one by repeating Step 2.
- Never auto-pay on behalf of the user. Lightning payments are irreversible.
- The `payment_context_token` links the invoice to the specific job — do not reuse it across requests.
- Only `lightning` is a valid `payment_methods` value.
Discussion