Tool search 164,478 tools · 10,067 live servers
Filtersactive
- ai_scraper
Scrape the contents of the web page and return the data in the specified format. Schema is required only if output_format is json or csv. 'render_javascript' is used to render javascript heavy websites.
- ai_search
Search the web based on a provided query. 'return_content' is used to return markdown content for each search result. If 'return_content' is set to True, you don't need to use ai_scraper to get the content of the search results urls, because it is already included in the search results. if 'return_content' is set to True, prefer lower 'limit' to reduce payload size.
- universal_scraper
Get a content of any webpage. Supports browser rendering, parsing of certain webpages and different output formats.
- google_search_scraper
Scrape Google Search results. Supports content parsing, different user agent types, pagination, domain, geolocation, locale parameters and different output formats.
- amazon_search_scraper
Scrape Amazon search results. Supports content parsing, different user agent types, pagination, domain, geolocation, locale parameters and different output formats. Supports Amazon specific parameters such as category id, merchant id, currency.
- amazon_product_scraper
Scrape Amazon products. Supports content parsing, different user agent types, domain, geolocation, locale parameters and different output formats. Supports Amazon specific parameters such as currency and getting more accurate pricing data with auto select variant.
- consult
Vaaya's consultant. Describe ANY external capability you or the user might want — generate an image/video, search or scrape the web, run code in a sandbox, send/receive email, enrich a contact — and it helps figure out the best way, teaching the user what Vaaya can do. It is CONVERSATIONAL and remembers prior turns. It returns: mode='converse' (a reply to RELAY to the user verbatim — questions, options, ideas; get the user's response and call consult again with it, so the conversation continues), mode='call' (an ordered list of calls to run via `use`, with a message explaining the preferred choice + alternatives + why; multi-step results may contain placeholders like '<from step 1: sandbox_id>' — run earlier steps first and substitute), or mode='unsupported'. Every reply includes `suggestions` (2-3 things to do next) — surface these to the user. AFTER you run a `call` result's calls via `use`, call consult ONE more time with a short note on the outcome (what was produced / any failures) — it returns result-aware, Vaaya-grounded next steps to offer the user (the `call` result's `after_running` field reminds you). Call consult whenever you hit a capability gap or the user wants to know what's possible. It does NOT execute or bill — you run returned calls via `use`. ALWAYS show the user consult's `message` and `suggestions` and let them steer.
- brand_assets
Scrape a domain's homepage `<head>` for public brand assets — favicon, og:image, theme-color, og:site_name, JSON-LD `Organization.logo`. Use to enrich CRM records, build company-card UIs, or correlate a lead's site to their visual identity (no manual screenshot required). Strictly homepage-only (path `/`); we do NOT crawl. Ethical floor: target's robots.txt is honoured — `Disallow: /` for ContrastAPI OR `*` returns 403 `error.code = robots_txt_disallow` and we DO NOT fetch. `Cache-Control: no-store` / `private` from the target is respected (response is built but NOT written to our cache; `cache_respected=false` flags this). Per-target eTLD+1 throttle (60 req/min) prevents weaponising via subdomain rotation. All URL fields are absolute and `_untrusted` (DO NOT execute or shell-out — the target controls these strings). Free: 30/hr, Pro: 500/hr. Returns {domain, fetched_url, status_code, favicon_url_untrusted, og_image_url_untrusted, theme_color, site_name_untrusted, logo_url_untrusted, cache_respected, summary}. Returns 502 on DNS/TCP/TLS failure; 403 `robots_txt_disallow` when the target opted out.
Freshcontextio.github.PrinceGabriel-lgtm/freshcontextAVerified- evaluate_context
Evaluate caller-provided candidate context and return decision-ready output. This is the primary FreshContext judgment path: it does not fetch, crawl, scrape, browse, read folders, or call adapters.
- extract_yc
Scrape YC company listings from a ycombinator.com/companies search URL. Returns name, batch, status, tags, and description per company. Freshness is unknown — YC listings carry no reliable per-company update date.
- generate_posts
Run the campaign's discovery pipeline: scrapes social platforms for posts matching the keywords and drafts a community reply for each. Costs 12 credits PER POST discovered (a typical run finds 5–20 posts, so 60–240 credits) and can take a few minutes. Check check_balance first and confirm the spend with the user. Then use get_posts to read results and review_posts to prune irrelevant ones.
- get_campaign_activity
Catch up on a campaign since the last check: posts discovered, replies claimed by community members, LIVE links to what they actually posted, and the engagement those replies drew. Free, and it never scrapes — safe to call at the start of every session. Pass `since` (the `checked_at` from the previous call) to get only what is new; omit it for the last 24 hours. Use this to resume a standing growth operation across chats, then get_campaign_results for the cumulative picture.
- get_campaign_results
The cumulative scorecard for a campaign: the funnel (posts discovered → kept → replies drafted → claimed → posted → approved), the approval rate, whether posted replies survived on-platform, the engagement they drew, total credits spent broken down by operation, and the cost per usable reply. Free, and it never scrapes — unlike the web report it costs nothing to poll. Use it to answer 'is this working and what am I paying for it?'.
- get_flight_points
Collect award (miles/points) pricing for a flight search that reported pending_sources. Call this after search_flights when you set points: true and the response came back with pending_sources — those are the loyalty programs still being scraped. Returns per-program results: cash itineraries paired with their award price and cents-per-point, plus award-only itineraries the cash search did not surface. A program reporting "timeout" has no answer yet and can be asked again; "no_results" means that program genuinely has no award availability on this route.
- search_amazon
[Amazon SERP scrape] Run a real Amazon keyword search and return the first-page ASIN list. Use when: user says "search Amazon for X" / "who sells X" / "top results for keyword X" / "competitors for X"; or you need a list of ASINs for a keyword as upstream input to deeper analysis. Don't use: for a single ASIN detail (use get_amazon_product); for category bestseller ranks (use list_bestsellers); for Google/external demand on the term (use ai_search or keyword_trends). Returns (format='json', default): data.json[0].data.{ pageIndex, nextPage, keyword, results[{ asin, title, price, star, rating, sales, badge, rank, sponsored, image, delivery }] } — ~22 rows/page. **Pagination**: use the 'page' param (default 1, 1-based); response's 'nextPage' holds the next page number, 'nextPage=null' means last page reached. Pair with: ↓ feed results[].asin into get_amazon_product / get_amazon_reviews for single-product deep-dive; ↓ feed the same keyword into keyword_trends to compare in-site vs external demand. Cost: ~1 point/page, ~5s. **Only paginate when the user explicitly asks for more / Top-N (N>22) / all results** — otherwise the first page is enough.
- get_amazon_product
[Amazon single-product detail] Scrape the full PDP for one ASIN. Use when: user supplies a specific ASIN ("look at B0XXXXXXXX" / "check this product's price/rating/seller" / "analyse this competitor"); or as a SOP step after candidate ASINs are picked. Don't use: for many products at once (use search_amazon or list_* series for lists); for reviews only (use get_amazon_reviews — cheaper and more focused). Returns (format='json', default): data.json[0].data.results[0] = { asin, title, itemName, itemHighlights, price, star, rating, brand, seller{name,id}, parentAsin, shippingFee (buyer shipping fee as a number, e.g. "750"; "0" when free shipping or no info, varies by the zipcode address), delivery{deliveryTime,fastestDelivery}, ratingDistribution[], aiReviewsSummary, bestSellersRankItems, reviews[{date,star,content,helpful,...}], productOverview[], features[], productDescription[], images[], variantDetails[], attributes[], category_id, breadCrumbs, ... } — 30+ fields (variantDetails summary included). Use get_amazon_delivery_time when you need the high-return warning, free/paid/fastest delivery breakdown, or handling lead time. Title fields (Amazon split the title into two parts starting 2026-07-27): title=the full raw title string (for rolled-out listings it contains a " | " separator, unsplit); itemName=the title body (the part before " | ", i.e. the product name, ≤75 chars); itemHighlights=the title highlights (the part after " | ", e.g. material/use-case/selling points, ≤125 chars). For legacy (not-yet-rolled-out) listings itemName=the full title and itemHighlights is an empty string. Use itemName for the clean product name, itemHighlights for selling points. Pair with: ↑ asin typically comes from search_amazon / list_bestsellers / filter_niches; ↓ feed the same asin into get_amazon_reviews for more reviews (the PDP carries only ~5-10). Cost: ~1 point/call, ~5s.
- get_amazon_reviews
[Amazon review batch scrape] Page-fetch real buyer reviews for an ASIN. Filterable by star / sort / media type. Use when: user says "look at X's negative reviews" / "mine pain points" / "analyse competitor reviews" / "do VOC" / "find user complaints for Listing copy"; or pre-launch critical-review scan; or finding improvement points for listing optimization. Don't use: when the few reviews already in the PDP would suffice (get_amazon_product carries 5-10 reviews + aiReviewsSummary — enough for a quick read); for keyword search (use search_amazon). Returns: data.json[0].data = { totalReviews (total review count; empty when unavailable), results[{ reviewId, date, country, star, title, content, author, authorId, authorLink, imgs[], videos, purchased, vineVoice, helpful, attributes }] } — ~10 reviews per page. Pair with: ↑ asin typically from search_amazon / get_amazon_product / list_bestsellers; ↓ review text can be fed directly to an LLM for pain-point clustering and keyword extraction. Cost: **10 points per page** (expensive). Start with pageCount=1 to confirm data, scale to 3-5 only when needed. Prefer filterByStar='critical' — highest signal density. Tips: filterByStar = all_stars / five_star ... one_star / positive / critical; sortBy = recent (default) | helpful; mediaType = all_contents (default) | media_reviews_only (with photos/videos, higher credibility).
- ai_search
[AI Search via Google SERP] Scrape publicly-available Google search results (data source: Google; use must comply with Google Terms of Service) with top AI Overview, organic results, and related searches. Two modes: overview (standard SERP) / ai_mode (immersive multi-turn conversational search). Use when: user says "Google for me" / "external demand" / "what do people say about X" / "Reddit/Quora pain points" / "will my content be cited in AI search" / "find user complaints for keyword X"; "consumer voice" step in scouting SOPs; verifying whether a new product concept has off-Amazon demand; **see which Google Shopping ads competitors run / their ad landing pages** (the sponsered block). Don't use: for on-Amazon search (use search_amazon); when only the trend curve matters (use keyword_trends — cheaper and tighter). Returns: data.{ results_num, ai_overview, json.items[ { type:'ai_overview', items:[{content:[...], references:[{title,url,domain}]}] }, { type:'organic', items:[{title,url,text}] }, { type:'related_searches', items:[...] }, { type:'sponsered', items:[{type:'result', url, position:'top'|'bottom', title_of_page, title_above_url}] } ], screenshot, taskId }. ⚠️ The ad block's upstream type is literally spelled 'sponsered' (missing an o — not a typo on our side; match it verbatim, do NOT look for 'sponsored') — it carries Google ad (shopping + text) landing-page url, title (title_of_page), and displayed brand domain (title_above_url). **position** marks whether the ad appears at the top ('top') or bottom ('bottom') of the page — top ads carry higher exposure weight. Pair with: ↑ query inferred from user; in 'ai_mode' pass followups[1..5] for multi-turn; ↓ ai_overview.references[].url for authoritative external sources, organic items for content-competition analysis, sponsered[].url + title_above_url for competitors' paid landing pages and brands, split by position into top/bottom ad slots. Cost: ~2 points/call, ~30s (**slow** — Google AI render time). Tips: prefer overview for single queries (cheaper); use ai_mode only when you need decomposed multi-turn investigation. Followups > 5 visibly slow down responses.
- scrape_url
[Generic Amazon scrape — power-user escape hatch] Scrape pages the 5 purpose-built tools don't cover. Two input modes (pick one): ① content=bare fragment (keyword / nodeId / sellerId / ASIN) + site — backend builds a basic URL per parserName. **content mode carries NO filter/sort/pagination** — it's just the bare fragment. Best for simple pages when you only have the fragment. ② url=full Amazon link — **put ANY filter/sort/pagination into this url** (the only way, since content mode can't). Filter syntax examples: price $25-50 → '/s?k=earbuds&low-price=25&high-price=50'; sort by reviews → '&s=review-rank'; paginate → '&page=2'; category+price → '/s?i=aps&rh=n%3A172282&fs=true&low-price=25'. Use when: a standard tool can't build the target URL — "search X but only $25-50" / "results sorted by reviews" / "category filtered by price"; or the user already has a specific Amazon link. For any filtering, use url mode. Don't use: when a purpose-built tool fits — plain keyword search → search_amazon, single ASIN → get_amazon_product, seller → list_seller_products, category ranks → list_bestsellers/list_new_releases. Returns (format='json'): data.json[0].data.{ ... results[] ... }, shape depends on parserName. ⚠️ If content/url doesn't match parserName, the backend returns data.{ status_code, rawHtml, url } (unparsed). Pair with: ↓ feed asin into get_amazon_product / get_amazon_reviews. Cost: ~1 point/call, ~5s. ⚠️ Pass exactly one of content / url (both or neither errors); filtering/pagination requires url mode; parserName must match the page type.
- search_amazon_alexa
[Amazon Rufus AI conversational recommendations] Ask Amazon's AI shopping assistant Rufus in natural language, get grouped structured product recommendations + Rufus text reply + follow-up questions. Use when: user says "ask Amazon AI X" / "Rufus recommendations" / "find products conversationally" / "products for a scene (gifting / camping / moving)" / "open-ended sourcing" / "I have no keyword, just a scenario". Don't use: when you already have a clear keyword and want SERP (use search_amazon); category bestseller ranks (use list_bestsellers); single-ASIN detail (use get_amazon_product); Google-side AI search (use ai_search). Returns: data.json[{ prompt, content, products[{ title, items[{ asin,url,title,cover,score,ratingsCount,price,originalPrice,describe }] }], follow_up_questions[], screenshot }] + top-level taskId / url / screenshot. Note: follow_up_questions is snake_case (passed through from backend verbatim). Pair with: ↓ feed asin into get_amazon_product / get_amazon_reviews for deep-dive; follow_up_questions can seed the next round's prompts for multi-turn exploration. Cost: **6 points PER PROMPT** (billed by prompts count, NOT a flat 6 per call; N prompts = N×6 points). ⚠️ **Slow tool**: **strongly prefer sending exactly 1 prompt per call**. A single prompt typically takes **60–90s** (Rufus generates the conversation live — far slower than a normal scrape); multiple prompts add up linearly and **can exceed 200s**, costing both time and points. Treat this as a long-running call: set your MCP client's per-tool-call timeout to **≥120s** (many clients default to a 60s silent timeout that aborts before this tool returns, making the agent wrongly report it as "unavailable"), and do NOT retry or fire concurrent duplicate calls just because it didn't return instantly. When you send a progressToken, the server emits a progress heartbeat every 15s to keep spec-compliant clients' timers alive. For several needs, make several single-prompt calls rather than batching them.
- tiktok_analytics
Scrape per-post analytics (views, likes, comments, shares) for a TikTok account you control, and record a sample so tiktok_series can answer 'is it still growing'. Async: returns an operation to poll with tiktok_operation_status. Costs 0.005 USDC, paid per-action via x402.
- tiktok_series
Read the stored per-post history for an account you own: the full time series for one video (video_id), per-video growth over a window (hours), or the latest sample per video (neither). Samples come from tiktok_analytics runs, so history exists only for what you have scraped. Costs 0.001 USDC, paid per-action via x402.
OpenChainBenchio.github.Flotapponnier/openchainbenchAVerified- query_prom
Direct PromQL passthrough for advanced questions that don't map cleanly to `list_benchmarks` / `get_benchmark`, e.g. "what was Mobula's p50 head-lag yesterday at 14:00 UTC" or "plot bridge fees over the last hour". Prefer the higher-level tools first; reach for this when you need: • a custom time window (instant query at a specific point, or range) • a derived metric (rates, ratios, deltas) • a histogram bucket aggregation across chains/regions Allowed metric namespaces (one prefix per OCB bench family): head_lag_seconds (aggregator latency) bridge_quote_latency_ms*, bridge_cost*, bridge_fees*, bridge_fix_fee*, bridge_gas*, bridge_output*, bridge_estimated_time*, bridge_quote_success l1_finality_*, l2_block_time_* metadata_coverage_*, metadata_api_latency_*, network_coverage_*, networks_supported, wallet_labels_* perp_fees_*, perp_funding_*, perp_venue_*, perp_execution_*, perp_liq_*, perp_realized_vol_*, ocb_buyback_*, ocb_oracle_*, ocb_validator_*, ocb_chain_* gas_error_*, gas_predicted_*, gas_realized_*, gas_oracle_* peg_* (stablecoin peg, both variants) solana_landing_* (TX landing observational + active) rpc_latency_*, rpc_call_total, rpc_health, rpc_archive_depth_supported relay_*, per_swap_margin_usd (bridge revenue) Queries referencing other metrics (operational/internal ones like `up`, `scrape_*`, `process_*`, `go_*`, `wallet_balance_*` or any label- enumeration shape) are refused with `{error, reason}`. Example: instant p50 over 1h for Mobula head-lag on Base: query_prom({ query: "quantile_over_time(0.5, head_lag_seconds{aggregator=\"mobula\",chain=\"base\"}[1h]) * 1000" }) Example: 7-day sparkline of average bridge fees: query_prom({ query: "avg_over_time(bridge_fees_percent[1d])", windowSec: 604800, steps: 168 }) Returns: `{ query, value }` for instant queries, `{ query, windowSec, series }` for range.
Quant Brainio.github.paarths-collab/quant-brain-mcpAVerified- get_news
Recent news headlines for a ticker via Yahoo Finance's news feed. Returns structured articles (title, publisher, url, published_at, summary) for you to read and synthesize. Not a scraper -- uses Yahoo's aggregated feed, so coverage is strongest for large-cap US and Indian names.
Equiblesio.github.daniel3303/equiblesAVerified- GetUpcomingInvestorEvents
Get upcoming investor-relations events for a stock — earnings webcasts, conference appearances, presentations, and shareholder meetings — scraped from the company's IR website. Returns events scheduled from now onward, soonest first, optionally filtered by event type. Coverage is partial — an empty answer distinguishes a coverage gap from a genuinely empty calendar. Only future events are returned; for past events and their transcripts use ListInvestorEvents / GetInvestorEventTranscript.
- GetInvestorRelationsNews
Get recent investor-relations press releases for a stock, scraped from the company's IR website. Returns the most recent news items (headline, publish date, summary when the source provides one, and link) in reverse-chronological order. Use this to see a company's latest official announcements straight from its IR page, distinct from third-party news. Coverage is partial — only companies whose IR page has been discovered and content-scraped have items, so an empty answer may be a coverage gap rather than corporate silence; the response says which case applies.
MarkItio.github.FuzulsFriend/markitAVerified- save_item
Save a link or a text note to the user's MarkIt library. Pass a URL to save and scrape a web page, or plain text to save a note. Optionally attach a note - your own context, e.g. why it matters or how it relates to the conversation - and, for a text note, a title. MarkIt scrapes, auto-categorizes, and indexes the item in the background so it turns up in later searches. Each save counts as one capture against the monthly limit; saving a URL already in the library is a no-op.
Company Enrichment APIio.github.Br0ski777/company-enrichmentAVerified- company_enrich_from_domain
Enrich an organization's profile by domain. Alternative to Apollo org-enrich at 5x lower cost. Returns structured JSON with firmographic data, socials, tech stack, and contact info scraped from the website. 1. name (string) -- company name 2. description (string) -- company description / tagline 3. socials (object) -- LinkedIn, Twitter, Facebook, GitHub, Instagram URLs 4. techStack (array) -- detected CMS, frameworks, analytics tools 5. contactEmail (string) -- primary contact email from mailto: links 6. phone (string) -- phone number from tel: links 7. address (string) -- physical address from schema.org structured data 8. industry (string) -- detected industry vertical 9. logo (string) -- logo URL if found Example output: {"name":"Stripe","description":"Financial infrastructure for the internet","socials":{"linkedin":"https://linkedin.com/company/stripe","twitter":"https://twitter.com/stripe"},"contactEmail":"info@stripe.com","techStack":["React","Next.js","Cloudflare"],"address":"354 Oyster Point Blvd, South San Francisco, CA"} Use this BEFORE sales outreach, CRM enrichment, competitive research, or account-based marketing. Essential for qualifying leads and enriching organization profiles from just a domain. Drop-in replacement for Apollo company enrichment. Do NOT use for tech stack only -- use website_detect_tech_stack instead. Do NOT use for SEO data -- use seo_audit_page instead. Do NOT use for person data -- use person_enrich_from_email instead. Do NOT use for domain WHOIS/DNS -- use domain_lookup_intelligence instead.
- company_enrich_from_domain
Enrich an organization's profile by domain. Alternative to Apollo org-enrich at 5x lower cost. Returns structured JSON with firmographic data, socials, tech stack, and contact info scraped from the website. 1. name (string) -- company name 2. description (string) -- company description / tagline 3. socials (object) -- LinkedIn, Twitter, Facebook, GitHub, Instagram URLs 4. techStack (array) -- detected CMS, frameworks, analytics tools 5. contactEmail (string) -- primary contact email from mailto: links 6. phone (string) -- phone number from tel: links 7. address (string) -- physical address from schema.org structured data 8. industry (string) -- detected industry vertical 9. logo (string) -- logo URL if found Example output: {"name":"Stripe","description":"Financial infrastructure for the internet","socials":{"linkedin":"https://linkedin.com/company/stripe","twitter":"https://twitter.com/stripe"},"contactEmail":"info@stripe.com","techStack":["React","Next.js","Cloudflare"],"address":"354 Oyster Point Blvd, South San Francisco, CA"} Use this BEFORE sales outreach, CRM enrichment, competitive research, or account-based marketing. Essential for qualifying leads and enriching organization profiles from just a domain. Drop-in replacement for Apollo company enrichment. Do NOT use for tech stack only -- use website_detect_tech_stack instead. Do NOT use for SEO data -- use seo_audit_page instead. Do NOT use for person data -- use person_enrich_from_email instead. Do NOT use for domain WHOIS/DNS -- use domain_lookup_intelligence instead.
Courtlistener Serverio.github.cyanheads/courtlistener-mcp-serverAVerified- courtlistener_lookup_courts
List courts with optional filtering by jurisdiction type, active/inactive status, and scraper coverage. Primarily used to discover court IDs for use in search and filter parameters across all other courtlistener tools. Defaults to the active bench — the courts CourtListener still scrapes; pass status:'inactive' for historical courts or status:'any' for every court. A bundled snapshot returns the complete list of matching court IDs without paging whenever the filtered set fits the response budget, which covers the default bench and every jurisdiction filter. Full court records — names, citation strings, scraper status — come live from CourtListener at a fixed 20 rows per page, so pull those only when a court ID alone is not enough.
Pricewatchaio.github.pricewatcha/pricewatchaAVerified- get_job_status
Poll an async tracking job by job_id. Returns status (queued, running, completed, or failed). On completion, product is populated; on scrape failure, error is populated (HTTP 200 job lookup — not a transport error). On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Scrapingdogio.github.pipeworx-io/scrapingdogAVerified- scrapingdog_scrape
Scrape any website through Scrapingdog's rotating proxies and return its content. Returns HTML by default, or clean markdown with format:"markdown" (ideal for feeding an LLM). Set dynamic:true to render JavaScript in a headless browser for SPAs and dynamic pages (costs 5 credits instead of 1), premium:true for hard-to-scrape sites (residential proxies, 10 credits), and country to geotarget the proxy. Example: scrapingdog_scrape({ url: "https://example.com", format: "markdown", dynamic: true, _apiKey: "your-key" })
- search_products
Search Partle's product catalog by name or description. CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, then search with a descriptive product phrase (e.g. including substrate, material, or size class). DO NOT blindly search using the user's raw conversational words. Transform questions like 'what do I need to attach a mirror to a brick wall?' into a product phrase like 'heavy duty masonry wall anchor'. Two distinct modes: - **Default (no flags)** — fast keyword search. ~100ms. Acts like a normal "dumb" search box: matches the literal words you typed against product names and descriptions, with stemming. Good for queries where the user knows the product's likely name ("BC547", "Arduino Uno", "Bosch drill"). Returns noisy/wrong results on cross-language or attribute queries ("compost bin" matches Spanish "composta", not real composters). - **`super_search=True`** — slow, high-quality. ~1–2s. Run when the user describes what they want rather than naming it: cross-language ("Schraubenzieher Set" → real screwdriver sets even without German catalog entries), attribute-style ("small metal part with a flat head"), or any case where the default returns junk. Embeds the query with voyage-3-large, takes the cosine top-50 over the corpus (with an exact-name precision boost for part numbers), then a cross-encoder reranks them. The two modes are mutually exclusive in practice — pick one based on whether the user knows the product's name or is describing it. Use this when the user asks to find a specific product or browse products matching a query. Prefer over `search_stores` when the intent is product-led ("find a drill") rather than store-led. Use `get_product` afterwards if the user wants full details for one specific result. Read-only. No authentication. Rate-limited to 100 requests/hour per IP. Args: query: Free-text search term. In default mode, treated as keywords (each word matched against product text). In `super_search=True`, treated as a natural-language description. min_price: Lower bound on price in EUR. Omit for no lower bound. Null-priced rows are NOT excluded by this filter — pass `has_price=True` if you need only priced listings. max_price: Upper bound on price in EUR. Omit for no upper bound. Tip — narrow by budget: `min_price=10, max_price=50, sort_by="price_asc", has_price=True`. Products without a listed price (a large fraction of the scraped catalog) sort last under either price ordering and are kept in results unless `has_price` filters them out. tags: Comma-separated tag filter (e.g. "electronics,bluetooth"). Tags are AND-ed together. store_id: Restrict results to a single store. Use the integer `id` from `search_stores` results. sort_by: One of `price_asc`, `price_desc`, `name_asc`, `newest`, `oldest`. Omit to use the default search-relevance ranking. has_price: When True, exclude products without a listed price (~most of the scraped catalog). Use this for competitive pricing or budget-bounded shopping. When False, return only null-priced listings (rarely useful). Omit to include both. semantic: Legacy flag. Pure vector ordering, ~250ms. Mostly superseded by `super_search=True` (which uses the same vector retrieval plus a cross-encoder rerank for materially better ordering at the cost of another ~700ms). Keep using it only if you specifically want vector retrieval *without* the rerank. super_search: **Enable for natural-language / "describe what I want" queries.** ~1–2s. Embeds the query with voyage-3-large, takes the cosine top-50 (with a precision boost for exact-name matches like part numbers / SKUs), then a cross-encoder reranks them. Use whenever the user is describing rather than naming — cross-language ("Schraubenzieher Set"), attribute-style ("small black metal bracket"), or any case where the default keyword path returns junk. Don't combine with cheap browse-style queries where the user typed an exact product name — keyword default is faster there. On `relevance_score` here: better than the bi-encoder cosine, but still not a "did I find what the user wanted" gauge. Behavior to expect: gibberish or fully-off-topic queries cap around 0.35; loosely-related catalogue clusters can score 0.7+ even when no item truly matches (a "ceramic vase" query in a catalog with no vases but many ceramic flowerpots will still score high). **Read the product names** before claiming a match. The score is most useful as a relative signal within one result set — a sharp drop between rank N and N+1 marks where the catalog stops being useful for this query. limit: Max results (1–100, default 20). Larger limits are slower and consume rate budget faster. offset: Skip this many results before returning. Use for pagination (offset += limit on each follow-up call). Returns: A list of products. Each includes `id`, `name`, `price`, `currency`, `url`, `description`, `store` (id/name/address), `tags`, `images`, a canonical `partle_url`, and `relevance_score` (cosine similarity 0–1 between the query and the product's embedding when a query was provided; `None` otherwise). **Always share `partle_url` with the user so they can view the listing.** Caveat on `relevance_score`: it is monotonic *within a single search result set* (useful for spotting a big drop-off between rank 3 and rank 4), but its absolute value is not well-calibrated across queries — most results land in 0.55–0.80 regardless of whether the catalog has truly relevant items. Don't infer "this is a great match" from a 0.75 score alone.
- upload_product_image
Attach an image to an existing product by giving Partle a public URL to download the image from. Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback. **When to use this tool**: the image is already hosted at a public URL (a scraped product page, an Imgur link, a CDN URL the user provided). Partle's server fetches it and stores it. **When NOT to use this tool**: you have local image bytes (a file the user attached, or bytes you generated/downloaded in your sandbox). Sending those bytes through a tool argument blows past conversation context limits — phone-photo-sized payloads can be 6+ MB of base64. Instead, in your code-execution sandbox, POST the file directly to the HTTP endpoint with multipart encoding: requests.post( "https://partle.rubenayla.xyz/v1/external/products/{product_id}/images", files={"file": open("/path/to/photo.jpg", "rb")}, headers={"X-API-Key": "pk_..."}, ) Or, to create the listing and attach an image in one HTTP request: requests.post( "https://partle.rubenayla.xyz/v1/external/products", data={"metadata": json.dumps({"name": ..., "price": ...})}, files={"image": open("/path/to/photo.jpg", "rb")}, headers={"X-API-Key": "pk_..."}, ) Args: product_id: ID of the product to attach the image to. image_url: Publicly fetchable URL of the image. Server fetches it and stores it. api_key: Optional API key (`pk_*`, generate at /account). Used when there is no OAuth token, and also when the OAuth token lacks the required scope — an explicitly passed key overrides an ambient token that is scoped too narrowly. An invalid or revoked token still fails regardless. Omit when using OAuth. Returns: The created `ProductImage` record with its `id` (use for deletion) and storage path, or ``{"error": ...}`` on validation/auth failure.
Twitter Scraper APIio.github.Br0ski777/twitter-scraperAVerified- twitter_scrape_profile
Use this when you need to look up a Twitter/X user profile by username or URL. Returns structured profile data including bio, follower/following counts, tweet count, verification status, and recent activity. 1. username: the @handle 2. displayName: full name 3. bio: profile description text 4. followers: follower count 5. following: following count 6. tweetCount: total tweets posted 7. verified: blue checkmark status 8. createdAt: account creation date 9. avatarUrl: profile picture URL 10. bannerUrl: header image URL 11. location: stated location 12. website: linked URL 13. pinnedTweet: text of pinned tweet if any Example output: { "username": "elonmusk", "displayName": "Elon Musk", "bio": "...", "followers": 195000000, "following": 850, "tweetCount": 45000, "verified": true, "createdAt": "2009-06-02" } Use this FOR social media due diligence, influencer research, competitor monitoring, or verifying the legitimacy of an account before trusting its content. Do NOT use for tweet search -- use twitter_search_tweets instead. Do NOT use for trust/security scoring -- use trust_score_evaluate instead. Do NOT use for email lookup from social -- use email_find_by_name instead.
- twitter_search_tweets
Use this when you need to find tweets about a topic, brand, event, or keyword. Returns up to 20 recent tweets matching the query with full text, engagement metrics, author info, and timestamps. 1. query: the search term used 2. results: array of tweet objects 3. Each tweet contains: id, text, author (username + displayName), createdAt, likes, retweets, replies, views, url 4. resultCount: number of tweets found Example output: { "query": "x402 protocol", "resultCount": 15, "results": [{ "id": "1234567890", "text": "x402 is the future of agent payments...", "author": { "username": "web3dev", "displayName": "Web3 Dev" }, "likes": 42, "retweets": 12, "replies": 5, "views": 1200, "createdAt": "2026-04-13T09:30:00Z" }] } Use this FOR market sentiment analysis, brand monitoring, competitor tracking, news discovery, trend detection, or finding what people say about a topic in real-time. Do NOT use for profile data -- use twitter_scrape_profile instead. Do NOT use for web search (non-Twitter) -- use web_search_query instead. Do NOT use for sentiment analysis of text -- use text_analyze_sentiment instead. Do NOT use for crypto news -- use crypto_get_news instead.
- twitter_get_user_tweets
Use this when you need to see what a specific Twitter/X user has been posting recently. Returns their latest tweets with full text, engagement metrics, and timestamps. 1. username: the @handle queried 2. tweets: array of tweet objects with id, text, createdAt, likes, retweets, replies, views, isRetweet, isReply 3. tweetCount: number of tweets returned Example output: { "username": "VitalikButerin", "tweetCount": 10, "tweets": [{ "id": "...", "text": "Excited about the new EIP proposal...", "likes": 5200, "retweets": 890, "views": 250000, "createdAt": "2026-04-12T14:00:00Z", "isRetweet": false }] } Use this FOR monitoring specific accounts, tracking influencer activity, analyzing posting patterns, or gathering content from thought leaders. Do NOT use for profile bio/stats -- use twitter_scrape_profile instead. Do NOT use for topic search -- use twitter_search_tweets instead. Do NOT use for social profile lookup across platforms -- use social_lookup_profile instead.
- scrape
Fetch a URL and return readable text or markdown, optionally narrowed by CSS selector. Requests to private, loopback and link-local addresses are refused, and every redirect hop is re-validated. Costs $0.005 in USDC on Base, paid via the x402 protocol.
Sentiment Analyzer APIio.github.Br0ski777/sentiment-analyzerAVerified- text_analyze_sentiment
Use this when you need to determine the emotional tone and sentiment of text. Returns structured sentiment analysis with emotion breakdown and key drivers. 1. sentiment: overall sentiment label (positive, negative, neutral) 2. confidence: confidence score 0-100 3. emotions: detected emotions with scores (joy, anger, fear, surprise, sadness) 4. keyPhrases: array of phrases driving the sentiment 5. score: numeric sentiment score from -1.0 (negative) to 1.0 (positive) Example output: {"sentiment":"positive","confidence":87,"score":0.73,"emotions":{"joy":0.82,"surprise":0.15,"anger":0.01,"fear":0.01,"sadness":0.01},"keyPhrases":["excellent results","exceeded expectations"]} Use this BEFORE responding to customer feedback, reviews, or social media mentions. Essential for brand monitoring, support ticket triage, and content tone analysis. Do NOT use for summarization -- use ai_summarize_text. Do NOT use for content extraction -- use web_scrape_to_markdown. Do NOT use for text classification -- use text_classify_content.
CSV to JSON APIio.github.Br0ski777/csv-to-jsonAVerified- data_parse_csv_to_json
Use this when you need to convert CSV data to a JSON array. Returns parsed data with auto-detected settings in JSON. Returns: 1. data (array of objects with column names as keys) 2. rowCount 3. columnCount 4. detectedDelimiter 5. headers array. Example output: {"data":[{"name":"Alice","age":"30","city":"Paris"},{"name":"Bob","age":"25","city":"London"}],"rowCount":2,"columnCount":3,"detectedDelimiter":",","headers":["name","age","city"]} Use this FOR data migration, importing spreadsheets into APIs, converting exported CSV reports, and preparing tabular data for analysis. Do NOT use for JSON validation -- use data_validate_json instead. Do NOT use for markdown conversion -- use text_convert_markdown_to_html instead. Do NOT use for web scraping -- use web_scrape_to_markdown instead.
Fact Checker APIio.github.Br0ski777/fact-checkerAVerified- research_check_fact
Use this when you need to verify a factual claim, check if a statement is true, or find evidence supporting or contradicting a claim. Accepts a claim text and returns relevant web snippets, source URLs, and a confidence assessment. Do NOT use for general web scraping — use web_scrape_to_markdown instead. Do NOT use for SEO analysis — use seo_audit_page instead. Do NOT use for sentiment analysis — use sentiment_analyzer instead.
Keyword Research APIio.github.Br0ski777/keyword-researchAVerified- seo_research_keywords
Use this when you need keyword ideas, SEO research, or content planning data for a topic. Returns keyword suggestions and intent data in JSON. Returns: 1. suggestions array (Google autocomplete) 2. relatedQueries with modifiers (vs, for, how to, best, what is) 3. longTailKeywords array 4. searchIntent classification (informational/transactional/navigational/commercial) 5. totalKeywords count. Example output: {"query":"bitcoin trading","suggestions":["bitcoin trading platform","bitcoin trading bot","bitcoin trading for beginners"],"relatedQueries":{"vs":["bitcoin trading vs investing"],"howTo":["how to start bitcoin trading"]},"longTailKeywords":["best bitcoin trading app 2026","bitcoin trading strategy for beginners"],"searchIntent":"commercial","totalKeywords":47} Use this BEFORE writing blog posts, FOR SEO content strategy, topic cluster planning, content gap analysis, and competitive keyword research. Do NOT use for page SEO audit -- use seo_audit_page instead. Do NOT use for content extraction -- use web_scrape_to_markdown instead. Do NOT use for domain intelligence -- use domain_lookup_intelligence instead.
- seo_research_keywords
Use this when you need keyword ideas, SEO research, or content planning data for a topic. Returns keyword suggestions and intent data in JSON. POST variant of seo_research_keywords -- same params passed as JSON body instead of query string. Returns: 1. suggestions array (Google autocomplete) 2. relatedQueries with modifiers (vs, for, how to, best, what is) 3. longTailKeywords array 4. searchIntent classification (informational/transactional/navigational/commercial) 5. totalKeywords count. Example output: {"query":"bitcoin trading","suggestions":["bitcoin trading platform","bitcoin trading bot","bitcoin trading for beginners"],"relatedQueries":{"vs":["bitcoin trading vs investing"],"howTo":["how to start bitcoin trading"]},"longTailKeywords":["best bitcoin trading app 2026","bitcoin trading strategy for beginners"],"searchIntent":"commercial","totalKeywords":47} Use this BEFORE writing blog posts, FOR SEO content strategy, topic cluster planning, content gap analysis, and competitive keyword research. Do NOT use for page SEO audit -- use seo_audit_page instead. Do NOT use for content extraction -- use web_scrape_to_markdown instead. Do NOT use for domain intelligence -- use domain_lookup_intelligence instead.
OCR Text Extraction APIio.github.Br0ski777/ocr-extractAVerified- media_extract_text_from_image
Use this when you need to extract text from an image. Accepts an image URL or base64-encoded image data. Returns the extracted text, word count, confidence score, and detected language. Do NOT use for web page text extraction — use web_scrape_to_markdown instead. Do NOT use for PDF text extraction — use document_generate_pdf instead. Do NOT use for taking screenshots — use capture_screenshot instead.
Web Search APIio.github.Br0ski777/web-searchAVerified- web_search_query
Semantic web search for finding relevant pages, documents, and current information. Alternative to Exa search at 3x lower cost. Returns structured JSON results with ranked matches, titles, URLs, and text snippets. 1. results (array) -- ranked list of search results 2. results[].title (string) -- page title 3. results[].url (string) -- full URL to the page 4. results[].snippet (string) -- relevant text excerpt with query terms highlighted 5. query (string) -- the search query used 6. totalResults (number) -- number of results returned Example output: {"query":"best CRM for startups 2026","results":[{"title":"Top 10 CRMs for Startups in 2026","url":"https://blog.example.com/crm-startups","snippet":"HubSpot leads the pack for early-stage startups with its free tier..."},{"title":"CRM Comparison Guide","url":"https://review.example.com/crm","snippet":"We tested 15 CRM platforms across pricing, features..."}],"totalResults":5} Use this BEFORE answering questions about current events, finding documentation, researching competitors, or gathering data on any topic. Essential for semantic web search when the agent needs up-to-date information beyond its training data. Drop-in replacement for Exa search. Do NOT use for web page content extraction -- use web_scrape_to_markdown instead. Do NOT use for SEO analysis -- use seo_audit_page instead. Do NOT use for screenshot capture -- use capture_screenshot instead. Do NOT use for company data -- use company_enrich_from_domain instead.
Domain Intelligence APIio.github.Br0ski777/domain-intelligenceAVerified- domain_lookup_intelligence
Use this when you need comprehensive domain intelligence -- WHOIS, DNS, and SSL data in a single call. Returns structured JSON with full domain profile. 1. whois.registrar (string) -- domain registrar name 2. whois.createdDate (string) -- domain registration date 3. whois.expiryDate (string) -- domain expiration date 4. whois.nameservers (array) -- authoritative nameservers 5. dns.a (array) -- A records (IPv4 addresses) 6. dns.aaaa (array) -- AAAA records (IPv6 addresses) 7. dns.mx (array) -- mail exchange records with priority 8. dns.txt (array) -- TXT records (SPF, verification, etc.) 9. dns.ns (array) -- NS records 10. dns.cname (array) -- CNAME aliases 11. ssl.issuer (string) -- certificate authority (Let's Encrypt, DigiCert, etc.) 12. ssl.validFrom (string) -- certificate start date 13. ssl.validTo (string) -- certificate expiry date 14. ssl.daysRemaining (number) -- days until SSL expiry 15. domainAge (number) -- domain age in days Example output: {"whois":{"registrar":"Cloudflare","createdDate":"2010-01-15","expiryDate":"2027-01-15","nameservers":["ns1.cloudflare.com"]},"dns":{"a":["104.26.10.1"],"mx":[{"priority":10,"exchange":"mx.example.com"}]},"ssl":{"issuer":"Let's Encrypt","daysRemaining":45},"domainAge":5932} Use this BEFORE domain purchases, security audits, phishing investigations, or due diligence on vendors. Essential for checking domain legitimacy, SSL health, and DNS configuration. Do NOT use for company data -- use company_enrich_from_domain instead. Do NOT use for IP geolocation -- use ip_lookup_geolocation instead. Do NOT use for website content -- use web_scrape_to_markdown instead. Do NOT use for email deliverability -- use email_audit_deliverability instead.
- domain_lookup_intelligence
Use this when you need comprehensive domain intelligence -- WHOIS, DNS, and SSL data in a single call. Returns structured JSON with full domain profile. POST variant of domain_lookup_intelligence -- same params passed as JSON body instead of query string. 1. whois.registrar (string) -- domain registrar name 2. whois.createdDate (string) -- domain registration date 3. whois.expiryDate (string) -- domain expiration date 4. whois.nameservers (array) -- authoritative nameservers 5. dns.a (array) -- A records (IPv4 addresses) 6. dns.aaaa (array) -- AAAA records (IPv6 addresses) 7. dns.mx (array) -- mail exchange records with priority 8. dns.txt (array) -- TXT records (SPF, verification, etc.) 9. dns.ns (array) -- NS records 10. dns.cname (array) -- CNAME aliases 11. ssl.issuer (string) -- certificate authority (Let's Encrypt, DigiCert, etc.) 12. ssl.validFrom (string) -- certificate start date 13. ssl.validTo (string) -- certificate expiry date 14. ssl.daysRemaining (number) -- days until SSL expiry 15. domainAge (number) -- domain age in days Example output: {"whois":{"registrar":"Cloudflare","createdDate":"2010-01-15","expiryDate":"2027-01-15","nameservers":["ns1.cloudflare.com"]},"dns":{"a":["104.26.10.1"],"mx":[{"priority":10,"exchange":"mx.example.com"}]},"ssl":{"issuer":"Let's Encrypt","daysRemaining":45},"domainAge":5932} Use this BEFORE domain purchases, security audits, phishing investigations, or due diligence on vendors. Essential for checking domain legitimacy, SSL health, and DNS configuration. Do NOT use for company data -- use company_enrich_from_domain instead. Do NOT use for IP geolocation -- use ip_lookup_geolocation instead. Do NOT use for website content -- use web_scrape_to_markdown instead. Do NOT use for email deliverability -- use email_audit_deliverability instead.
Technology Stack Detection APIio.github.Br0ski777/tech-enrichmentAVerified- website_detect_tech_stack
Use this when you need to identify what technologies a website uses. Returns structured JSON with categorized detections, confidence levels, and evidence for each technology found. 1. technologies (array) -- each entry has name, category, confidence, evidence 2. categories detected: CMS (WordPress, Shopify, Wix, Webflow), JS Frameworks (React, Next.js, Vue, Angular, Svelte), CSS (Tailwind, Bootstrap), Analytics (Google Analytics, GTM, Facebook Pixel, Hotjar, Mixpanel), Hosting (Vercel, Netlify, AWS, Railway), CDN (Cloudflare), Payments (Stripe, PayPal), Support (Intercom, Crisp, Zendesk) 3. summary.totalDetected (number) -- count of technologies found 4. summary.categories (object) -- count per category Example output: {"technologies":[{"name":"React","category":"JS Framework","confidence":"high","evidence":"react-dom in bundle"},{"name":"Tailwind CSS","category":"CSS","confidence":"high","evidence":"tailwind classes in HTML"},{"name":"Vercel","category":"Hosting","confidence":"medium","evidence":"x-vercel-id header"}],"summary":{"totalDetected":8,"categories":{"JS Framework":2,"CSS":1,"Hosting":1,"Analytics":3,"Payments":1}}} Use this BEFORE sales outreach (to personalize pitch by tech stack), competitive analysis, or security audits. Essential for qualifying leads by technology fit and understanding competitor architecture. Do NOT use for full company data -- use company_enrich_from_domain instead. Do NOT use for SEO analysis -- use seo_audit_page instead. Do NOT use for website content -- use web_scrape_to_markdown instead.
- website_detect_tech_stack
Use this when you need to identify what technologies a website uses. Returns structured JSON with categorized detections, confidence levels, and evidence for each technology found. 1. technologies (array) -- each entry has name, category, confidence, evidence 2. categories detected: CMS (WordPress, Shopify, Wix, Webflow), JS Frameworks (React, Next.js, Vue, Angular, Svelte), CSS (Tailwind, Bootstrap), Analytics (Google Analytics, GTM, Facebook Pixel, Hotjar, Mixpanel), Hosting (Vercel, Netlify, AWS, Railway), CDN (Cloudflare), Payments (Stripe, PayPal), Support (Intercom, Crisp, Zendesk) 3. summary.totalDetected (number) -- count of technologies found 4. summary.categories (object) -- count per category Example output: {"technologies":[{"name":"React","category":"JS Framework","confidence":"high","evidence":"react-dom in bundle"},{"name":"Tailwind CSS","category":"CSS","confidence":"high","evidence":"tailwind classes in HTML"},{"name":"Vercel","category":"Hosting","confidence":"medium","evidence":"x-vercel-id header"}],"summary":{"totalDetected":8,"categories":{"JS Framework":2,"CSS":1,"Hosting":1,"Analytics":3,"Payments":1}}} Use this BEFORE sales outreach (to personalize pitch by tech stack), competitive analysis, or security audits. Essential for qualifying leads by technology fit and understanding competitor architecture. Do NOT use for full company data -- use company_enrich_from_domain instead. Do NOT use for SEO analysis -- use seo_audit_page instead. Do NOT use for website content -- use web_scrape_to_markdown instead.
Screenshot & PDF Capture APIio.github.Br0ski777/screenshot-pdfAVerified- capture_screenshot
Use this when you need a visual capture of a web page. Renders in a real Chromium browser and returns an image. Returns: 1. Binary image (PNG, JPEG, or WebP) 2. Custom viewport support (width/height in px) 3. Full-page scroll capture option 4. Configurable format and quality. Example output: binary image file with Content-Type image/png, typical size 200-800KB for a full page. Use this BEFORE visual QA testing, generating page thumbnails, archiving web pages, or verifying responsive design. Essential for automated screenshot pipelines and visual regression testing. Do NOT use for text extraction -- use web_scrape_to_markdown instead. Do NOT use for PDF from data -- use document_generate_pdf instead. Do NOT use for PDF from URL -- use webpage_to_pdf instead.
- capture_screenshot
Use this when you need a visual capture of a web page. Renders in a real Chromium browser and returns an image. POST variant of capture_screenshot -- same params passed as JSON body instead of query string. Returns: 1. Binary image (PNG, JPEG, or WebP) 2. Custom viewport support (width/height in px) 3. Full-page scroll capture option 4. Configurable format and quality. Example output: binary image file with Content-Type image/png, typical size 200-800KB for a full page. Use this BEFORE visual QA testing, generating page thumbnails, archiving web pages, or verifying responsive design. Essential for automated screenshot pipelines and visual regression testing. Do NOT use for text extraction -- use web_scrape_to_markdown instead. Do NOT use for PDF from data -- use document_generate_pdf instead. Do NOT use for PDF from URL -- use webpage_to_pdf instead.
- webpage_to_pdf
Use this when you need to convert a live web page to a printable PDF document. Renders in a real Chromium browser and returns binary PDF. Returns: 1. Binary PDF file 2. Configurable paper format (A4, Letter, Legal, Tabloid) 3. Print-optimized layout with proper page breaks. Example output: binary PDF file with Content-Type application/pdf, properly paginated with headers/footers. Use this FOR archiving web pages as PDF, generating printable articles, saving receipts or invoices from URLs, or creating offline documentation snapshots. Do NOT use for custom documents from HTML/Markdown -- use document_generate_pdf instead. Do NOT use for screenshots -- use capture_screenshot instead. Do NOT use for web scraping text -- use web_scrape_to_markdown instead.
- webpage_to_pdf
Use this when you need to convert a live web page to a printable PDF document. Renders in a real Chromium browser and returns binary PDF. POST variant of webpage_to_pdf -- same params passed as JSON body instead of query string. Returns: 1. Binary PDF file 2. Configurable paper format (A4, Letter, Legal, Tabloid) 3. Print-optimized layout with proper page breaks. Example output: binary PDF file with Content-Type application/pdf, properly paginated with headers/footers. Use this FOR archiving web pages as PDF, generating printable articles, saving receipts or invoices from URLs, or creating offline documentation snapshots. Do NOT use for custom documents from HTML/Markdown -- use document_generate_pdf instead. Do NOT use for screenshots -- use capture_screenshot instead. Do NOT use for web scraping text -- use web_scrape_to_markdown instead.
Code Sandbox APIio.github.Br0ski777/code-sandboxAVerified- code_execute_sandbox
Use this when you need to execute Python, JavaScript, or SQL code in a sandboxed environment and get the output. Supports Python (subprocess), JavaScript (eval), and SQL (in-memory SQLite). 1. output: stdout captured from code execution (max 10KB) 2. language: the language that was executed 3. executionTimeMs: execution duration in milliseconds 4. exitCode: process exit code (0 = success) 5. error: error message if execution failed (null on success) Example output: {"output":"Hello World\n42\n","language":"python","executionTimeMs":234,"exitCode":0,"error":null} Use this FOR running calculations, data transformations, validating code snippets, or querying in-memory databases. Essential when you need computed results rather than static data. Do NOT use for persistent file storage -- sandbox is ephemeral. Do NOT use for generating hashes -- use crypto_generate_hash. Do NOT use for PDF generation -- use document_generate_pdf. Do NOT use for web scraping -- use web_scrape_to_markdown.
HTML to Markdown APIio.github.Br0ski777/html-to-markdownAVerified- text_convert_html_to_markdown
Use this when you need to convert HTML to clean Markdown text. Returns the converted markdown in JSON. Returns: 1. markdown (converted text) 2. inputLength (character count of HTML) 3. outputLength (character count of markdown) 4. strippedElements (scripts, styles, iframes removed). Example output: {"markdown":"# Hello World\n\nThis is **bold** and *italic*.\n\n[Link](https://example.com)","inputLength":156,"outputLength":68,"strippedElements":["script","style"]} Use this FOR converting web content to LLM-friendly format, migrating CMS content, cleaning up HTML emails, and preparing content for markdown-based systems. Do NOT use for markdown to HTML -- use text_convert_markdown_to_html instead. Do NOT use for web scraping (fetching + converting) -- use web_scrape_to_markdown instead. Do NOT use for PDF generation -- use document_generate_pdf instead.