For agents · Datasource Pulse
Agent access
Three ways for an agent (or the human wiring one up) to run Datasource Pulse: Apify’s official MCP server, the plain Apify API, or the x402 endpoint that needs no account of any kind. Every snippet below is copy-paste ready; the example check pings a public URL, so no secrets are required to try it.
From the blog · July 24, 2026
An AI agent just paid our API two cents. No account. No card. No human.
The full story of the first agent payment: $0.02 in USDC on Base, settled on a public blockchain, with the transaction receipt inside.
Read the post →MCP
Apify runs an official MCP server; the URL below scopes it to this Actor, so a connected agent sees Datasource Pulse as a callable tool with its full input schema. Works today in any MCP client. Bring an Apify token; clients that support OAuth can omit the header and sign in instead.
{
"mcpServers": {
"datasource-pulse": {
"url": "https://mcp.apify.com/?tools=growth_wizard/datasource-pulse",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}Direct API (curl)
One synchronous call: run the Actor and get the dataset back. The response is one status record per connector checked, with a stable failure_class enum an agent can branch on.
curl -X POST \
"https://api.apify.com/v2/acts/growth_wizard~datasource-pulse/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"checks": [{
"type": "credential",
"id": "public-ping",
"label": "Public ping - GitHub Zen",
"vendor": "generic_http",
"url": "https://api.github.com/zen",
"successStatusCode": 200
}]
}'LangChain
Via Apify’s official LangChain integration. The tool exposes the same JSON input; results come back as the run’s dataset records.
# pip install langchain-apify
# export APIFY_API_TOKEN=your_token
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("growth_wizard/datasource-pulse")
result = tool.invoke(input={"run_input": {"checks": [{
"type": "credential",
"id": "public-ping",
"vendor": "generic_http",
"url": "https://api.github.com/zen",
"successStatusCode": 200
}]}})x402: no account at all
A single health check for $0.02 in USDC on Base, paid per request. No Apify account, no API key, no signup. Calling the endpoint unpaid returns a standard x402 v1 envelope carrying the price, the pay-to address, and the full input and output schemas: the 402 is the documentation.
curl -si -X POST https://datasourcepulse.com/api/x402/check \
-H "Content-Type: application/json" -d '{}'
# -> HTTP 402 + JSON envelope: price, pay-to, input/output schemasPaying takes one wrapped fetch:
// npm i x402-fetch viem
import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.WALLET_KEY);
const payFetch = wrapFetchWithPayment(fetch, account);
const res = await payFetch("https://datasourcepulse.com/api/x402/check", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
vendor: "generic_http",
url: "https://api.github.com/zen",
successStatusCode: 200,
}),
});
console.log(await res.json()); // { state, failure_class, ... }The endpoint is listed in Coinbase’s public x402 catalog (the Bazaar), and every settlement is public: live payment feed on x402scan · how the first payment went.
This origin also publishes its x402 manifest at /.well-known/x402.json: the standard DiscoveredResource envelope with full input and output schemas, so an agent can learn what is payable here without a facilitator or a prior transaction.
Prefer an automation platform?
If the agent you are wiring up lives inside an automation platform, or you would rather not write code at all, the same checks run there too. Importable workflow templates and webhook-first recipes:
- n8n · three importable workflow templates (Slack, Gmail, and email alerts), also published on n8n.io
- Zapier · webhook-first recipes using Catch Hook
- Make · custom webhook recipes for the same alert payloads
Datasource Pulse watches the data sources your product depends on: credentials, quotas, and scraper output quality. One alert when something degrades, one notice when it recovers.