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.1

Published

Drop-in OpenAI function-calling tools for Agent402: turn 1,000+ pay-per-call web tools into OpenAI tool definitions, with auto-payment (proof-of-work free, USDC via x402 paid). Works with chat.completions, Assistants v2, and the Responses API. Zero deps.

Readme

agent402-openai-tools

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

  • 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

Use with chat.completions

import OpenAI from "openai";
import { agent402Tools } from "agent402-openai-tools";

const openai = new OpenAI();

// Pick the tools you want the model to know about. Smaller list = better tool-selection.
const { tools, execute } = await agent402Tools({ slugs: ["extract", "hash", "render", "screenshot"] });

const res = await openai.chat.completions.create({
  model: "gpt-4o-mini",
  messages: [{ role: "user", content: "Get the title of https://example.com/article" }],
  tools,
});

// Resolve tool calls (free — paid via proof-of-work behind the scenes).
const call = res.choices[0].message.tool_calls?.[0];
if (call) {
  const result = await execute(call.function.name, JSON.parse(call.function.arguments));
  console.log(result);
}

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 }).

Pay with USDC (wallet-only tools)

For the catalog's wallet-only tools (browser, network, memory), wrap your fetch with @x402/fetch and pass it in:

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

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

const { tools, execute } = await agent402Tools({
  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