Build agents that can safely discover and use paid MCP (Model Context Protocol) tools without creating vendor accounts or managing API keys. With ATXP, your agent brings a wallet and pays per request, so you can start building immediately and ship faster.
  • Reduced friction: Try new tools in minutes—no signups, no keys, no billing setup.
  • Pay‑as‑you‑go cost control: Per‑MCP‑tool‑call pricing; you only pay for what you use.
  • Better security: Keep secrets out of your app; requests are authorized with signed payments instead of shared keys.
  • Composable tooling: Combine multiple paid MCP servers behind a single client and consistent API.

Build your first ATXP agent

1

Install the library

Install the ATXP client SDK in your project:
npm install @atxp/client
2

Set up your account

Create an ATXP account and set your account connection string in an environment variable. The best way to do this is to create a .env file in the root of your project and add the following line:
.env
ATXP_CONNECTION=https://accounts.atxp.ai?connection_token=<random_string>
Never commit your .env file to version control. It is a good idea to add your .env to your .gitignore file to prevent it from being committed.
echo .env >> .gitignore
3

Define the services that you want to use

Define the services that you want to use in your client.
const browseService = {
  mcpServer: 'https://browse.mcp.atxp.ai/',
  toolName: 'atxp_browse',
  description: 'browse',
  getArguments: (prompt: string) => ({ query: prompt }),
  getResult: (result: any) => result.content[0].text
};
4

Create an ATXP client

Create a client using an ATXP account by importing the ATXP client SDK and other dependencies.
// Import the ATXP client SDK
import { atxpClient, ATXPAccount } from '@atxp/client';

// Read the ATXP account details from environment variables
const atxpConnectionString = process.env.ATXP_CONNECTION;

// Create a client using the `atxpClient` function
const client = await atxpClient({
  mcpServer: browseService.mcpServer,
  account: new ATXPAccount(atxpConnectionString),
});
5

Use the services in your agent

Use the services in your agent.
const prompt = "What are the top 3 articles by points on https://news.ycombinator.com?";

try {
  const result = await client.callTool({
      name: browseService.toolName,
      arguments: browseService.getArguments(prompt),
  });
  console.log(`${browseService.description} result successful!`);
  console.log('Result:', browseService.getResult(result));
} catch (error) {
  console.error(`Error with ${browseService.description}:`, error);
  process.exit(1);
}

Resources