npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

agent402-openai-tools

v0.1.11

Published

Drop-in OpenAI function-calling tools for Agent402.Tools (the applied layer of Agentic Finance): turn tools from its catalog of 500+ pay-per-call tools and skill packs (x402 or MPP) into OpenAI tool definitions, one per catalog tool, with payment handled

Readme

agent402-openai-tools

Drop-in OpenAI function-calling tools for Agent402 - the open-source, self-hostable x402 + MCP server with 500+ pay-per-call web tools (browser, web search, PDF, images, live data, payment helpers, wallet-keyed memory).

Agent402 is the applied layer of Agentic Finance - agents that pay and get paid on their own over the two open wires, x402 and MPP (Machine Payments Protocol). Every paid endpoint answers both on the same 402; wallet-only tools take any payment-wrapped fetch (@x402/fetch, or a stock mppx fetch).

  • Zero new infra. Get back a ready-to-pass tools array for chat.completions, Assistants v2, or the Responses API.
  • Free tier by default. No wallet needed - the compute-payable tools settle with a built-in proof-of-work (sub-second sha256 puzzle).
  • Wallet-only tools optional. Pass an @x402/fetch-wrapped fetch and the model can call any tool in the catalog.
  • Doesn't burn discovery tokens. Stop the model from "exploring" the web to find a tool - give it the catalog up front.

Install

npm install openai agent402-openai-tools @x402/fetch @x402/core @x402/evm viem

The @x402/* and viem packages pay wallet-only tools from your wallet; the free tier needs only the first two.

Use with chat.completions

import OpenAI from "openai";
import { agent402Tools } from "agent402-openai-tools";
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const payClient = new x402Client();
registerExactEvmScheme(payClient, { signer: privateKeyToAccount(process.env.AGENT_KEY) });
const payFetch = wrapFetchWithPayment(fetch, payClient);

const openai = new OpenAI();

// Pick the tools you want the model to know about. Smaller list = better tool-selection.
// Web search, then a cited answer: both wallet-only, paid per call through payFetch.
const { tools, execute } = await agent402Tools({ slugs: ["search", "answer"], freeOnly: false, fetch: payFetch });

const messages = [{ role: "user", content: "Search the web for x402 payment protocol adoption, then answer with citations: what is the x402 payment protocol?" }];
for (let turn = 0; turn < 4; turn++) {
  const res = await openai.chat.completions.create({ model: "gpt-4o-mini", messages, tools });
  const msg = res.choices[0].message;
  messages.push(msg);
  if (!msg.tool_calls?.length) { console.log(msg.content); break; }
  for (const call of msg.tool_calls) {
    const result = await execute(call.function.name, JSON.parse(call.function.arguments));
    messages.push({ role: "tool", tool_call_id: call.id, content: JSON.stringify(result) });
  }
}

No wallet yet? The pure-CPU tools (hash, uuid, base64, markdown, JSON and more) run free with proof-of-work and no wallet. Leave out fetch; the default (freeOnly: true) keeps only those tools:

const { tools, execute } = await agent402Tools({ slugs: ["hash", "uuid", "json-to-csv"] });

Use with Assistants v2 or the Responses API

The shape returned by agent402Tools() is the same OpenAI function-calling JSON used by every flavor of the OpenAI API. Pass tools directly to assistants.create({ tools }) or to responses.create({ tools }).

More wallet-only tools

The rest of the wallet-only catalog (browser, network, memory) is paid the same way: list the slugs beside freeOnly: false and the same payFetch.

const { tools, execute } = await agent402Tools({
  slugs: ["extract", "render", "screenshot"],
  freeOnly: false,
  fetch: payFetch,
});

Self-hosted Agent402

Point at your own instance:

const { tools, execute } = await agent402Tools({ baseUrl: "https://agent402.example.com" });

Trust & baseUrl

The catalog server you point baseUrl at controls the name, description, and JSON Schema of every generated tool - and tool descriptions are passed to your LLM. Only point baseUrl at an Agent402 instance you operate or trust. The default (https://agent402.tools) is the maintained, open-source hosted instance.

License

MIT