Démarrage rapide
Deux hôtes d’API partagent le même payTo et l’USDC sur Base : la passerelle d’origine et le worker des outils de la vague 1. Ces derniers offrent une démo gratuite étiquetée (?demo=1) et trois appels réels gratuits par IP et par jour UTC. Ensuite, les appels non payés renvoient un 402 x402 v2 standard. Des échantillons étiquetés pour chaque outil du catalogue sont aussi sur ce hub, à /demo/{slug}.json.
Essai gratuit
Sur https://forge-tools.dentreprise.workers.dev, ajoutez ?demo=1 (ou demo=true) à l’URL d’un outil pour un échantillon ou un extrait étiqueté — HTTP 200, sans paiement, ce n’est pas une donnée réelle. Les 3 premiers appels réels réussis par IP client et par jour UTC sont aussi gratuits ; les échecs ne sont pas comptés. Les appels suivants non payés reçoivent toujours un 402 x402 v2 valide. La passerelle d’origine n’offre pas cet essai ; utilisez les fichiers étiquetés /demo/{slug}.json.
curl -sS "https://forge-tools.dentreprise.workers.dev/api/gtin-validate?gtin=3017624010701&demo=1"
Réponse de démo étiquetée
{
"demo": true,
"demo_label": "DEMO / SAMPLE — not live data. This is a labelled example response and was not charged.",
"charged": false,
"tool": "/api/gtin-validate",
"docs": "https://agent-hub.dentreprise.workers.dev/tools/gtin-validate/",
"how_to_get_live_data": "Call the same URL without demo=1. The first 3 successful real calls per IP per UTC day are free; after that attach an x402 v2 PAYMENT-SIGNATURE (USDC on Base).",
"sample": {
"type": "EAN-13",
"valid": true,
"gtin14": "03017624010701",
"gs1_prefix_region": "France & Monaco"
}
}Guides pratiques payants
Deux guides concis tirés du travail de Forge Agent Hub, vendus 3 $ USDC pièce. ?demo=1 renvoie la table des matières et un extrait.
playbook-x402-seller
Guide pratique : devenir vendeur x402 sur Cloudflare Workers.
playbook-mcp-publish
Guide pratique : créer et publier un serveur MCP dans le registre officiel.
JavaScript — @x402/fetch
Client officiel x402 v2. Installez @x402/fetch et @x402/evm. L’ancien nom de paquet x402-fetch est la lignée v1 obsolète et ne doit pas servir pour ces points d’accès.
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
// Official x402 v2 client. The older package name "x402-fetch" is the deprecated v1 line.
const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);
const fetchWithPayment = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
});
const res = await fetchWithPayment(
"https://forge-tools.dentreprise.workers.dev/api/gtin-validate?gtin=3017624010701"
);
console.log(await res.json());Python — x402
Paquet officiel PyPI x402. Utilisez x402HttpxClient (async) ou x402_requests (sync) après register_exact_evm_client avec EthAccountSigner.
import asyncio
import os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
# Official PyPI package: x402
account = Account.from_key(os.environ["EVM_PRIVATE_KEY"])
client = x402Client()
register_exact_evm_client(client, EthAccountSigner(account))
async def main():
async with x402HttpxClient(client) as http:
res = await http.get("https://forge-tools.dentreprise.workers.dev/api/gtin-validate?gtin=3017624010701")
print(res.json())
asyncio.run(main())
# Sync alternative:
# from x402 import x402ClientSync
# from x402.http.clients import x402_requests
# client = x402ClientSync()
# register_exact_evm_client(client, EthAccountSigner(account))
# with x402_requests(client) as session:
# print(session.get("https://forge-tools.dentreprise.workers.dev/api/gtin-validate?gtin=3017624010701").json())Serveur MCP — forge-agent-mcp
Le mode stdio couvre tout le catalogue (les deux hôtes d’API). Clonez forge-agent-mcp et pointez votre client MCP vers src/server.mjs. Le remote Streamable HTTP hébergé sur la passerelle d’origine n’expose toujours que les outils de cette passerelle.
{
"mcpServers": {
"forge-agent-hub": {
"command": "node",
"args": ["/path/to/forge-agent-mcp/src/server.mjs"]
},
"forge-agent-api": {
"url": "https://x402-gateway.forge-x402.workers.dev/mcp",
"transport": "streamable-http"
}
}
}Wrapper d’outil LangChain
Enveloppez les mêmes clients x402 en outil LangChain avec DynamicStructuredTool (@langchain/core) ou @tool (langchain_core).
import { DynamicStructuredTool } from "@langchain/core/tools";
import { z } from "zod";
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);
const fetchWithPayment = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
});
export const gtin_validate = new DynamicStructuredTool({
name: "gtin_validate",
description: "GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit): type, expected check digit, corrected code, GTIN-14 and EAN-13 forms, GS1 prefix region, book/coupon flags.",
schema: z.object({}),
func: async (input) => {
const res = await fetchWithPayment("https://forge-tools.dentreprise.workers.dev/api/gtin-validate" + "?" + new URLSearchParams(input));
return JSON.stringify(await res.json());
},
});import os
from langchain_core.tools import tool
from eth_account import Account
from x402 import x402ClientSync
from x402.http.clients import x402_requests
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
account = Account.from_key(os.environ["EVM_PRIVATE_KEY"])
client = x402ClientSync()
register_exact_evm_client(client, EthAccountSigner(account))
@tool
def gtin_validate() -> str:
"""GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit): type, expected check digit, corrected code, GTIN-14 and EAN-13 forms, GS1 prefix region, book/coupon flags."""
with x402_requests(client) as session:
return session.get("https://forge-tools.dentreprise.workers.dev/api/gtin-validate").text