Landfall developer guide
Website intelligence for AI agents. Send a URL, get structured JSON back in about a second. Pay per call in USDC with x402: no account, no API key, never charged if a call fails.
What you can call
| Endpoint | MCP tool | Price | Returns |
|---|---|---|---|
GET /v1/audit?url= | audit_landing_page | $0.05 | Ad-readiness score and verdict, tags with IDs, conversion paths, top 5 fixes |
GET /v1/business?url= | get_business_details | $0.02 | Name, phones, emails, address, hours, socials, company and VAT numbers |
GET /v1/tracking?url= | check_tracking | $0.01 | Ad pixels and analytics with IDs, tag managers, consent, site platform |
GET /v1/preview?url= | preview_landing_page | Free | Audit verdict and score only (10/hour) |
GET /v1/sample | sample_audit | Free | A complete example audit |
Prices are in USDC on Base mainnet. Base URL: https://landfall-production-74ad.up.railway.app
Use it from Claude, Cursor or any MCP client
Add this server URL. The free tools work straight away; paid tools work in clients that support x402 payments.
https://landfall-production-74ad.up.railway.app/mcp
{
"mcpServers": {
"landfall": {
"url": "https://landfall-production-74ad.up.railway.app/mcp"
}
}
}
Pay per call from TypeScript
npm install @x402/fetch @x402/evm viem
import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
client.setSpendControls({ maxAmountPerPayment: "$0.10" });
client.register("eip155:*", new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)));
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://landfall-production-74ad.up.railway.app/v1/business?url=" + encodeURIComponent("https://example.co.uk"));
console.log(await res.json());
Pay per call from Python
pip install "x402[httpx]" eth-account
Use the x402 Python client the same way: wrap your HTTP client with an x402 signer, then call any endpoint above. A request without payment returns 402 with a PAYMENT-REQUIRED header describing the price; the client signs it and retries automatically.
How payment works
- Call any paid endpoint. Without payment you get
402and a base64PAYMENT-REQUIREDheader. - Your x402 client signs a USDC transfer for exactly that amount and retries with a
PAYMENT-SIGNATUREheader. - Landfall verifies the payment, does the work, and settles only if the work succeeded. The
200response carries aPAYMENT-RESPONSEreceipt.
Errors
Errors are JSON: {"error": {"code", "message", "charged"}}. Failed calls (site unreachable, error page, not HTML, timeout, bot protection) are never charged.
Limits
Public websites only, static HTML (JavaScript is not run), first 1.5 MB per page, 12 second timeout.