# Unstuck > Pay-per-call tools for AI agents: lead lists by technology, tech stacks, work email find and verify, Google Maps businesses and reviews, Trustpilot reviews, keyword data, SEC filings, web search, page reading, PDFs, domains and screenshots. One prepaid key or one MCP connection; failed calls are free. ## What it does and does not do - Does: runs the tools listed below on demand and returns JSON. Data comes from public web pages and third-party data providers (DataForSEO, MillionVerifier, Crossref, NVD, RDAP, SEC EDGAR). - Does not: send email, bypass logins or paywalls, or run anything on a schedule. Results are not kept, except screenshot images, which stay at their link for 24 hours. - Results come from public sources and providers and can be incomplete or out of date. Check anything important before relying on it. ## Connect - MCP (Streamable HTTP): https://unstuckapi.com/mcp . initialize and tools/list are public. The server is stateless; a single tools/call request works. - REST: POST https://unstuckapi.com/v1/tools/{name} with the tool input as the JSON body. REST always needs a key (HTTP 401 without one); free tries are MCP only. - Tested clients: Claude.ai and Claude Desktop (custom connector; the Connect button opens the payment page); Claude Code; ChatGPT (custom connector); Codex CLI; Raw HTTP (curl), see the keyless example. Other MCP apps with remote (HTTP) connectors should work but are untested. ## Keys - Preferred: header 'Authorization: Bearer ' on REST and MCP. - Also accepted: header 'x-api-key: '; the api_key argument on keyless MCP connections; '?key=' on the /mcp URL, only for apps that cannot send headers (URLs end up in logs and history). - Keys come from paying at /top-up, from the Connect button in Claude, or from a keyless paid MCP call (a new key with no credit plus its payment link). Keys that never get credit stop working after 14 days. ## Free tries (MCP only, no key) - Tools: read_page, domain_check, domain_info, pdf_to_text, vulnerability_lookup, paper_search. - Limits: 10 calls a day per caller (callers are grouped by network: IPv4 /24, IPv6 /48; and per key when one is sent), plus a shared pool of 200 calls a day across all callers. Reset at midnight UTC. - Each free result ends with a line giving the free calls left, which limit applies, and the next reset. A failed free call does not use up a try. - When they are used up, the call returns error free_limit_reached with resets_at. No key is created. ## Prices - web_search: $0.01 per call. Search the web and get the top results (title, URL, snippet) as clean JSON. Live Google results, any country or city. Use when you need current information, sources, or links. - read_page: $0.005 per call (free to try). Fetch any URL and get the page's main content as clean markdown. Renders JavaScript in a real browser, so it works on modern sites where a plain fetch returns nothing. Use to read articles, docs, product pages or search results. - screenshot: $0.01 per call. Take a screenshot of a website. Open any web page URL in a real browser and capture it as a PNG image, either the visible area or the full page. Use it to see what a site looks like, check a page layout, or capture visual proof of a web page. - domain_check: $0.005 per call (free to try). Check if a domain name is available to register. Looks the domain up in the official registry (RDAP) and says whether it is already taken or appears free to buy. Use it to find an available domain for a new business, product, or website name. - domain_info: $0.01 per call (free to try). Look up everything about a domain: WHOIS-style registration data (registrar, creation and expiry dates via RDAP), DNS records (A, AAAA, MX, NS, TXT), email security (parsed SPF and DMARC), and the website's SSL/TLS certificate issuer and expiry date. Use it to research a company's domain, check when a domain or certificate expires, debug DNS or email deliverability, or verify who hosts a site. - pdf_to_text: $0.005 per call (free to try). Extract the text from a PDF file at a URL and return it as markdown, page by page. Use it to read a PDF, parse a form, report, paper, invoice, or document, or convert a PDF to text. Works on PDFs with a text layer (scanned image-only PDFs return little or no text; no OCR). - email_verify: $0.02 per call. Check whether an email address is real and safe to send to. Says if it will arrive or bounce (deliverable, undeliverable, risky, unknown), flags throwaway, role-based (info@, sales@), catch-all and free-mail addresses, and suggests a fix for typos like gmail.con. Use it before sending outreach or to clean up a sign-up list. - email_find: $0.10 per call. Find a person's work email address from their name and company website. Tries the usual patterns (first.last, flast, first, and so on), checks each one, and returns the first that is confirmed real, with how confident it is. Says so when the company accepts mail for any address and the guess cannot be confirmed. Use it to reach a specific person at a company. - keyword_volume: $0.15 per call. See how many people search Google for each phrase per month, what advertisers pay per click, and how competitive it is. Give up to 100 phrases in one call. Use it to pick keywords for a website, blog post, or ad campaign. - shopping_prices: $0.25 per call. Compare what stores charge for a product right now. Returns the Google Shopping listings with price, currency, seller and link. Listings are as Google shows them and can include used, refurbished, rental and bundle offers, so check the title and seller before treating a price as the going rate. Use it to check competitor pricing or find the going rate before buying or listing something. - business_listings: $0.03 per call. Find local businesses of a kind in a city, as listed on Google Maps: name, address, phone number, website, star rating and number of reviews. Use it to build a lead list, find competitors, or look up a business's contact details. - business_reviews: $0.05 per call. Read the most recent Google reviews of a local business: star rating, what the customer wrote, and the date. Give the business name and city, or a place_id from business_listings. Use it to judge a business's reputation or see what customers complain about. - leads_by_tech: $0.03 per company returned. Build a lead list of websites that use specific software, e.g. every Shopify store using Klaviyo, or dental sites on WordPress, with each site's published phone numbers, emails and social profiles. Ask for as many as you need (default 25, up to 50); you pay only for sites returned. Filter by country and keyword. Use it to find prospects who already use (or need) what you sell. - tech_stack: $0.05 per call. See what a website is built with: its store platform (Shopify, WooCommerce), CMS (WordPress), email marketing, analytics, payments, hosting and more, plus the phone numbers, emails and social profiles published on the site. Use it to qualify a sales lead, size up a competitor, or find out what software a company already pays for. Data comes from a regularly refreshed web crawl, not a live visit; last_checked says when the site was scanned, and small or new sites may show only part of their stack. - company_reviews: $0.03 per call. Read a company's most recent Trustpilot reviews: star rating, headline, what the customer wrote, date, and whether the company replied, plus its overall rating and review count. Give the company's website domain. Use it to vet a supplier or prospect, or to find a competitor's weak spots. - company_filings: $0.02 per call. List a US public company's recent SEC filings (10-K annual reports, 10-Q quarterlies, 8-K current reports, proxies and more) by stock ticker or CIK: form, filing date, period, description and direct document links. Data source: SEC EDGAR public filings (free public data; not affiliated with or endorsed by the SEC). - insider_trades: $0.03 per call. Recent insider buying and selling at a US public company, by stock ticker or CIK: who traded (director, officer, 10% owner), transaction date, buy/sell/grant code with its plain meaning, shares, price, and shares held after, parsed from Form 4 filings. An option or RSU that vests shows as two rows in the same filing: the derivative given up and the common stock received. Data source: SEC EDGAR public filings (free public data; not affiliated with or endorsed by the SEC). - company_financials: $0.03 per call. Key financial numbers for a US public company by stock ticker or CIK: revenue, net income, diluted EPS, assets, liabilities, equity and cash (or any XBRL concept you name), latest annual and latest quarterly value with period, form and filing date. Data source: SEC EDGAR XBRL financial data (free public data; not affiliated with or endorsed by the SEC). - vulnerability_lookup: $0.002 per call (free to try). Look up a security vulnerability by CVE id, or search CVEs by keyword (product, library, attack; newest first): description, CVSS score and severity, published and modified dates, affected vendors/products, CWE weaknesses, known-exploited flag and reference links. Data source: NVD. This product uses data from the NVD API but is not endorsed or certified by the NVD. - paper_search: $0.002 per call (free to try). Search scholarly papers, articles, books and preprints by topic or title: title, authors, year, journal or venue, DOI, link, type and citation count (metadata only, no abstracts). Use it to find sources or citations for a research question. Data source: Crossref. - Machine-readable: https://unstuckapi.com/v1/tools (prices, free flag, billing rule, input and output schemas, example inputs) and https://unstuckapi.com/openapi.json. ## Billing - Credit is prepaid by card through Stripe in $10, $20, $50 amounts. One-time payments; no subscription and no automatic charges. - Each call costs the tool's listed price, taken from the balance when it succeeds. Failed calls (errors, timeouts, blocked or broken pages) are never charged. - leads_by_tech is priced per company returned: the most it could cost is held first, and the unused part is refunded at once. - email_find is charged only when it returns a confirmed address. email_verify is charged per address checked, including unknown results. - Other tools: a call that runs and returns a result is charged even if the result list is empty. - Credit never expires. Unused credit is refundable within 30 days of purchase. - Adding credit is the user's decision and needs a person with a card: the minimum is $10. A top_up_url opens a Stripe payment page. ## Response shape - REST success: {"tool", "result": {...}, "charged_usd", "balance_usd"}. - MCP success: structuredContent = the result fields plus charged_usd and balance_usd; the same JSON is repeated as text content. screenshot also returns an image block. - REST errors: HTTP 400 invalid_input / invalid_json, 401 unauthorized (with get_key_url), 402 insufficient_balance (balance_usd, price_usd, top_up_url), 404 unknown_tool, 422 tool failed (charged_usd 0), 429 rate_limited (Retry-After). - MCP errors: isError true and structuredContent.error with code, message, charged, amount_charged_usd, retryable, retry_after_seconds, needs_user, user_action, suggested_fix, partial_results, balance_usd, daily_cap_remaining_usd, request_id, docs_url, plus top_up_url, api_key, resets_at, free_tries_left where relevant. ## Error codes (MCP) - free_limit_reached: Free tries for this tool are used up for today. resets_at gives the next reset (midnight UTC). No key is created. - payment_required: A paid tool was called with no key. A new API key with no credit (api_key) and its top_up_url are returned. Nothing is charged. - api_key_required: A paid tool was called with no key and no more keys can be created for this caller today. top_up_url sells a key with credit. - invalid_api_key: The key sent is unknown or disabled. - insufficient_balance: The balance is below the price of the call. balance_usd, price_usd and top_up_url are included. - invalid_input: An argument failed validation. invalid_fields lists the fields. - rate_limited: Too many calls on one key; retry_after_seconds says when to retry. - fetch_failed / timeout / upstream_error: The target site or a data provider failed. Usually worth one retry. - still_working: A slow data lookup is still running. Nothing was charged; the same call about 30 seconds later returns the result. - page_error: read_page got an error page, a bot check or an empty render instead of content. - blocked_by_site: The site refuses requests from Unstuck's server network. Retrying will not help. ## Limits and speed - Every call ends within 45 seconds. Some DataForSEO lookups are slow and can return error still_working after about 28 seconds; nothing is charged, and the same call about 30 seconds later returns the result. - leads_by_tech returns up to 50 companies per call. Other limits are in each tool's input schema. - Paid calls are limited to 60 a minute per key. ## Data use - The Terms ban spam and harvesting personal data for unsolicited messages, and require CAN-SPAM and GDPR compliance with email tools. A found or verified address is not permission to contact someone. https://unstuckapi.com/terms - How Unstuck's fetcher identifies itself and how to opt out: https://unstuckapi.com/bot ## Who runs it - Built and supported by Brian in Texas. Support: support@unstuckapi.com. Payments: Stripe (merchant of record). - Terms: https://unstuckapi.com/terms . Privacy: https://unstuckapi.com/privacy . Refunds: https://unstuckapi.com/refunds . Status: https://unstuckapi.com/status . Changelog: https://unstuckapi.com/changelog ## Optional settings - Header x-unstuck-location: default location (e.g. "Houston, TX" or "United States") for keyword_volume, web_search, shopping_prices and business_listings when a call leaves location out. Invalid values are ignored.