B2B contact data: find and verify professional email addresses, find and validate phone numbers, enrich people and companies, and search companies by industry, size and location. Pay per call, no Tomba account needed.
https://router.fluxapay.xyz/api/tombaFind the email address of the author of an article URL.
Person and company profiles for an email address in one call (Clearbit-compatible format).
Company profile for a domain (Clearbit-compatible format): size, revenue, founding year, location, industry.
Find the email addresses Tomba has for a company, by domain or company name, with each person's name, title, department and verification status. Priced per 10 addresses requested: limit 10, 20 or 50 (default 10); use page for more.
Check whether a domain is a webmail or disposable email provider.
Suggest up to five companies, with domains, for a partial company name.
Count the email addresses Tomba has for a domain, by type, department and seniority.
Find one person's professional email from their name and company domain (or company name), with a verification status.
The patterns a domain uses to build email addresses, e.g. {first}.{last}.
The web pages where an email address was found, with first and last seen dates.
Check whether an email address can receive mail: deliverability status, MX, SMTP and catch-all checks.
Get the person and company behind an email address: name, position, company, social profiles.
Find the professional email behind a LinkedIn profile URL.
How many of a company's email addresses Tomba has in each country.
Person profile for an email address (Clearbit-compatible format): employment, location, social handles.
Find a phone number from an email address, a company domain or a LinkedIn URL (send at least one). full=true returns every number found.
Validate a phone number: formats, line type, carrier, region and time zones.
Search Tomba's company database with a plain-language query or structured filters (country, city, industry, size, type, revenue, founded, technologies, keywords, SIC, NAICS). 50 companies per page.
Companies similar to a domain (competitors), 25 per page, with name and industry.
The technologies a website uses, with categories.
Copy this prompt and paste it into your AI agent (like Claude, GPT-4, etc.) to enable automatic X-402 payment handling.
** Your task ** Call the API at: https://router.fluxapay.xyz/api/tomba Follow the steps below in order. ** Step 1 - Install FluxA Wallet CLI ** npm install -g @fluxa-pay/fluxa-wallet Or use without installing: npx fluxa-wallet <command> ** Step 2 - Register agent ** fluxa-wallet init --name "<YOUR_AGENT_NAME>" --client "<YOUR_CLIENT>" The response may include an authorization URL. Present the user with options: [Yes, open the link] [No, don't open]. If YES: run 'open "<URL>"' to open in their browser. Verify: fluxa-wallet status ** Step 3 - Discover endpoints ** curl https://router.fluxapay.xyz/api/tomba Returns JSON with: name, description, endpoints (paths, methods, descriptions, prices), paymentRequired, and networks. ** Step 4 - Choose payment method ** Ask the user: [On-chain USDC (Base)] or [FluxA Monetize Credits] If USDC: - --currency USDC - --amount in atomic units (6 decimals, e.g., 100000 = 0.10 USDC) If Credits (1 credit = 1 USDC): - --currency FLUXA_MONETIZE_CREDITS - --amount in 2-decimal units (e.g., 10 = 0.10 credits, 100 = 1.00 credits) ** Step 5 - Create an intent mandate ** x402 v3 uses intent mandates: the user pre-approves a spending plan (budget + time window), then the agent makes autonomous payments within those limits. fluxa-wallet mandate-create \ --desc "Spend up to <BUDGET> for <DESCRIPTION> valid for <DURATION>" \ --amount <BUDGET_IN_UNITS> \ --seconds <DURATION_IN_SECONDS> \ --currency <USDC or FLUXA_MONETIZE_CREDITS> Options: - --desc (required): Human-readable spending plan description - --amount (required): Budget in units for the chosen currency (see Step 4) - --seconds (optional, default 28800 = 8h): Duration in seconds - --currency (optional, default USDC): USDC or FLUXA_MONETIZE_CREDITS ** Step 6 - Get user to sign the mandate ** The response from Step 5 includes mandateId and authorizationUrl (TTL: 10 minutes). Present the user with options: [Yes, open the link] [No, don't open]. If YES: run 'open "<authorizationUrl>"' to open in their browser. ** Step 7 - Wait for mandate to be signed ** fluxa-wallet mandate-status --id <MANDATE_ID> Poll until mandate.status is "signed". The response also includes remainingAmount. Important: Use --id, not --mandate. ** Step 8 - Call the API ** curl https://router.fluxapay.xyz/api/tomba Optionally add the X-Agent-ID header for agent attribution (its value is the agent_id from 'fluxa-wallet status'): curl -H "X-Agent-ID: <YOUR_AGENT_ID>" https://router.fluxapay.xyz/api/tomba If it returns HTTP 402, continue to Step 9. ** Step 9 - Pay via x402 v3 ** Pass the complete HTTP 402 response body as --payload: fluxa-wallet x402-v3 \ --mandate <MANDATE_ID> \ --payload '$PAYLOAD_402' The payload must contain an accepts array. Do NOT extract individual fields - pass the entire 402 response JSON. The response includes xPaymentB64 (the payment token). ** Step 10 - Retry with payment token ** Retry the same request with the X-Payment header (optionally add X-Agent-ID for attribution): curl -H "X-Payment: <xPaymentB64>" <ORIGINAL_API_URL> Return the raw API response to the user without post-processing. ** Opening links for user ** Whenever you need to open a URL (authorization, approval, or any external link): 1. Present the user with a choice using your interactive options/menu capability (e.g., AskUserQuestion tool) 2. Options: [Yes, open the link] [No, don't open] 3. If YES: run 'open "<URL>"' to open in their default browser 4. If NO: ask how they would like to proceed ** Error handling ** - mandate_not_signed: User hasn't signed yet - ask them to open authorizationUrl - mandate_expired: Time window passed - create a new mandate - mandate_budget_exceeded: Budget too low - create a new mandate with a higher limit - agent_not_registered: No Agent ID - run 'fluxa-wallet init' first - Invalid payload: missing accepts array: Pass the full 402 response JSON