Next free-source huntWe check for new free data every weekday.
News & RSSMCP serverFirst audited Nov 13, 2026

Tanod

Pay-per-call agent tools: PDF, OCR, translation, news search, prediction markets, web, chain reads.The vendor's description, from its MCP Registry listing.

Passed public checksAudited Nov 13, 2026

Every public check ran and passed. Public audit: we connect as an AI client would, list the tools and check what they say. We do not run them. How we audit

Does it work?
YesConnected in 356 ms.
Sign-up?
None neededIt answered without any account or key.
Can it change things?
YesSome tools say they can change things. Your AI client should ask you first.
Endpointhttps://tanod.dev/mcp

Website Streamable HTTP · protocol 2025-11-25 · server version 0.1.0

What we checked, the evidence, and the tools it offers.

What we checked

Security

  • Passed: Connections are encrypted (HTTPS).

  • Passed: No hidden instructions found in tool text.

Safety labels

  • Note: 64 tools are labelled as able to change things.

    Expected for tools that send, write or buy. Your AI client should ask before calling them.

    • render_page
    • make_qr_code
    • make_barcode
    • token_verdict
    • pdf_merge
    • pdf_split
    • pdf_extract_pages
    • extract_pdf_images
    • and 56 more
  • Passed: Every tool says whether it only reads or can change things.

Tools

  • Passed: 326 tools listed.

  • Passed: Every tool describes its inputs with a valid schema.

Protocol

  • Passed: The MCP handshake works (Streamable HTTP).

  • Passed: Protocol version 2025-11-25 (latest).

  • Passed: Unknown requests are refused.

Connection

  • Passed: The server responds.

Tools (326)

As the server describes them. The labels are the server's own: it says whether each tool only reads or can change things.

  • scan_contract_sourcepactlint: Scan Solidity source code for security bugs before you deploy, review or depend on it. For a deployed verified contract use scan_contract_address. Runs solc, Slither and custom DeFi detecto…Read-only
  • scan_contract_addresspactlint: Scan a deployed, verified contract on Ethereum or Base for security bugs, by address. For source you hold use scan_contract_source. Fetches the verified source from Sourcify. Runs solc, Sli…Read-only
  • check_contract_before_interactiontxpeek: Check an address for risk right before you send a transaction to it, approve it, or buy its token (Base or Ethereum). For a full scan of verified source use scan_contract_address; for a token…Read-only
  • scan_agent_packagetoolsniff: Scan an AI-agent skill or MCP server package before installing it. To see whether a remote MCP server answers use check_mcp_server. Reads every file as text in a sandbox. Returns a verdict…Read-only
  • render_pagesitepeek: fetch a public http(s) URL and return clean Markdown (static, or with `js:true` executed in a sandboxed headless browser) or a PNG screenshot; private and internal addresses are refused. Fo…Can change things
  • extract_pdfsitepeek: extract the text of a PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Input: exactly one of `url` or `pdf_base64`, plus op…Read-only
  • get_page_metasitepeek: read a public web page's metadata from its static HTML (no browser). For the readable text use render_page; for every link use extract_links. Returns status, title, description, lang, canon…Read-only
  • ocr_imagesitepeek: OCR text in a public image; 17 languages. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lines and paragraphs kept), word…Read-only
  • inspect_domaindnspeek: inspect a domain's DNS, email authentication and TLS cert in one call. For registration data use rdap_lookup; for availability use check_domain_availability. Returns DNS records, SPF/DMARC/D…Read-only
  • rdap_lookupdnspeek: RDAP (the successor of whois) registration lookup. For DNS and TLS use inspect_domain; for an IP's ASN and reverse DNS use ip_lookup. Input: `query`, a domain, an IPv4 or IPv6 address or an…Read-only
  • verify_emaildnspeek: verify an email address before you send to it or accept it at sign-up. For the domain's SPF, DMARC and DKIM use inspect_domain. Checks syntax (practical RFC 5322 / 5321 limits, IDNA domains)…Read-only
  • ip_lookupdnspeek: look up an IP address. For the raw registry record use rdap_lookup. Returns version, is_public and, for a private or reserved address, `reserved_kind` (rfc1918, loopback, cgnat, link_local,…Read-only
  • resolve_enschainpeek: resolve an ENS name or address on Ethereum mainnet. For text records use get_ens_records. Input: `name` XOR `address`. Forward-resolves a name, or reverse-resolves an address with forward…Read-only
  • decode_calldatachainpeek: decode EVM transaction calldata. To run a read call use eth_call; to fetch a transaction use get_transaction. Input: `calldata` and optional `signature`; with no signature the selector is…Read-only
  • get_token_infochainpeek: get ERC-20 token metadata on Ethereum, Base or Robinhood Chain. For a holder's balance use get_balance; for supply alone use get_total_supply. Returns name, symbol, decimals and total supp…Read-only
  • get_balancechainpeek: read the native or ERC-20 balance of an address on Ethereum, Base or Robinhood Chain. For several tokens at once use get_portfolio; for Solana use get_solana_balance. Returns wei and a dec…Read-only
  • get_gaschainpeek: read the current gas price on Ethereum, Base or Robinhood Chain. For the gas units a transaction needs use estimate_gas. Returns `gas_price_wei`, `gas_price_gwei` and the latest block's `b…Read-only
  • get_blockchainpeek: read the latest block header on Ethereum, Base or Robinhood Chain. For height and age only use get_block_number; for a past time use get_block_at_time. Typically 0.2-1 s. Price: USD 0.001.…Read-only
  • get_token_pricechainpeek: read a token price from a Chainlink on-chain price feed (deterministic oracle answer, not a DEX spot price). For a DEX quote of any token use get_swap_quote; for Solana use get_solana_toke…Read-only
  • get_transactionchainpeek: read a transaction and its receipt on Ethereum, Base or Robinhood Chain. For the receipt alone use get_transaction_receipt; for decoded events use decode_tx_logs. An unknown hash is status…Read-only
  • get_nftchainpeek: read one NFT on Ethereum, Base or Robinhood Chain. For the ERC-721 owner alone use get_nft_owner. The collection name, symbol and token URI are attacker-controlled on-chain strings; the UR…Read-only
  • get_allowancechainpeek: read an ERC-20 allowance on Ethereum, Base or Robinhood Chain. For every live approval of a wallet use audit_token_approvals. A token that is not a readable ERC-20 is a 422 (not charged).…Read-only
  • get_portfoliochainpeek: read the native balance and up to 20 ERC-20 balances of an address on Ethereum, Base or Robinhood Chain in one call. For one balance use get_balance; for transfer history use get_erc20_tra…Read-only
  • get_swap_quotechainpeek: quote an exact-input swap on Uniswap V3 (QuoterV2, read-only eth_call) on Ethereum or Base. For price impact over up to five sizes use pre_trade_check. Input: `chain`, `token_in`, `token_o…Read-only
  • web_searchfindpeek: search the web for a query and get back ranked results (title, url, snippet) from an independent index (Mojeek). For the pages' text in the same call use search_with_contents; for news use…Read-only
  • get_weatherweatherpeek: hourly weather forecast for a point or a city. For airport observations use get_metar. Input: either `lat` and `lon` together, or `place` alone, plus optional `hours`. `place` matches ci…Read-only
  • check_sanctionschainpeek: screen one crypto address against the US OFAC SDN list's digital currency addresses. For up to 1,000 addresses use check_sanctions_batch; for lookalikes use check_address_poisoning. EVM an…Read-only
  • get_fx_ratesutilpeek: foreign-exchange reference rates for a base currency. For live on-chain rates use get_live_fx_rates. Unknown currencies and older dates are a 422 (not charged); an ECB outage is a 5xx (not…Read-only
  • make_qr_codeutilpeek: make a QR code image. For 1-D barcodes use make_barcode; to read a code use read_qr_barcode. Returns `svg` (text) or `data_base64` (PNG), or with `output` "url" a 24 h download link, plus `…Can change things
  • geocodeutilpeek: offline geocoding over the GeoNames cities15000 table. For places of a kind nearby use find_places_nearby. Input: either `place` alone or `lat` and `lon` together. `place` matches cities of…Read-only
  • get_public_holidaysutilpeek: public holidays of a country for a year. To count working days use count_or_add_business_days. An unsupported country, subdivision, language or year is a 422 naming the supported values (no…Read-only
  • parse_phone_numberutilpeek: parse and format a phone number. For a prefix's country and network use lookup_phone_prefix. A string that is not a phone number, or a national form without region, is a 422 (not charged).…Read-only
  • validate_identifierutilpeek: check the format and check digits of an identifier. For a VIN's vehicle use decode_vin; for phone numbers use parse_phone_number. Returns `valid`, `reason` (invalid_checksum, invalid_length…Read-only
  • parse_user_agentutilpeek: parse a User-Agent string. For known x402 monitors and indexers with call rates use identify_x402_client. A User-Agent is self-reported and easy to fake; `is_bot` is a heuristic (declared c…Read-only
  • cron_next_runsutilpeek: the next run times of a cron expression. For iCalendar RRULEs use expand_rrule. Standard 5-field cron (minute hour day-of-month month day-of-week) or a macro (@daily, @hourly, ...); no seco…Read-only
  • convert_timeutilpeek: convert one instant between time zones. For business days use count_or_add_business_days. Zones come from the pinned IANA tz database (tzdata package), not the host; a wall time in a DST ga…Read-only
  • parse_urlutilpeek: parse a URL. To fetch the page use render_page. The URL is parsed, never fetched. Public-suffix split from the Public Suffix List snapshot bundled with the parser (dated 2025-04-07; suffixe…Read-only
  • make_barcodeutilpeek: make a 1-D barcode image. For QR codes use make_qr_code; to find the product behind a number use lookup_barcode_product. Returns `svg` (text, with width_mm/height_mm) or `data_base64` (PNG,…Can change things
  • check_security_headerssitepeek: grade a public page's HTTP security headers. For a phishing-list check use check_url_phishing; for DNS and TLS use inspect_domain. Grades the final response after redirects: HSTS, CSP, X-Fr…Read-only
  • check_robots_txtsitepeek: test whether robots.txt lets a crawler fetch a URL. For the URLs a site lists use parse_sitemap. Fetches <origin>/robots.txt (first 512 KiB) and matches the URL's path under RFC 9309: longe…Read-only
  • parse_sitemapsitepeek: parse a sitemap into its URLs. For crawl permission use check_robots_txt. An index is followed one level: its first 5 child sitemaps are fetched, the rest listed. Files over 10 MB (or 50 MB…Read-only
  • extract_linkssitepeek: list a public page's links. For a site's URL list use parse_sitemap. `check: true` probes each returned http(s) link (HEAD, then a small GET; 20 s in total): each link then carries `check`…Read-only
  • get_block_at_timechainpeek: find the block at a point in time on Ethereum, Base or Robinhood Chain. For the latest block use get_block_number. Returns `block` (the last block at or before the time) and `next_block`,…Read-only
  • detect_proxychainpeek: detect whether a contract is a proxy, and of which kind. For code size and hash use get_contract_code. Reads the code, the EIP-1967 / EIP-1822 / OpenZeppelin legacy slots and slot 0, then…Read-only
  • get_ens_recordschainpeek: read an ENS name's records (Ethereum mainnet). To resolve the address use resolve_ens. Returns the `resolver` (with ENSIP-10 `wildcard`), `addresses` (eth; btc decoded to a P2PKH/P2SH/bech…Read-only
  • decode_tx_logschainpeek: decode a transaction's event logs on Ethereum, Base or Robinhood Chain. For events over a block range use get_event_logs. Returns `status`, `block`, `log_count` and up to 200 `logs`; `even…Read-only
  • text_statsutilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, sentences, paragraphs, averages), reading…Read-only
  • detect_languageutilpeek: Detect the language of a text. To translate use translate_text. Returns the most likely language (ISO 639-1 and 639-3 code, name, confidence) and 3 alternatives, from an offline ensemble of…Read-only
  • markdown_to_htmlutilpeek: Convert Markdown to sanitized HTML. For the reverse use html_to_text. Returns the HTML of a Markdown document (markdown-it-py; `gfm` adds tables, strikethrough, autolinks and task lists), c…Read-only
  • html_to_textutilpeek: Convert HTML to Markdown or plain text. To fetch a URL use render_page; for the reverse use markdown_to_html. Returns the readable content of an HTML document you send (the HTML itself, nev…Read-only
  • diff_textutilpeek: Diff two texts: unified line diff, word or character changes. For PDF or Word files use compare_documents. Returns the differences between two texts: similarity ratio, counts and hunks; in…Read-only
  • validate_jsonutilpeek: Validate JSON against a JSON Schema. To pull JSON out of prose use extract_json_with_schema; to convert formats use convert_data. Returns whether a JSON value is valid against a JSON Schema…Read-only
  • convert_datautilpeek: Convert data between JSON, YAML, CSV, TOML and XML. To check JSON against a schema use validate_json. Returns the document converted from json, yaml, csv, toml or xml to json, yaml, csv or…Read-only
  • hash_textutilpeek: Hash text or bytes: sha256, keccak256, blake2b, md5, crc32, ... For a keyed HMAC use hmac_sign_verify. Returns hex digests of the text (as UTF-8) or base64 bytes you send. md5 and sha1 are…Read-only
  • make_slugutilpeek: Make a URL slug from text. For other case styles use text_case. Returns a URL slug: accents removed, Latin ligatures, Greek and Cyrillic transliterated, apostrophes dropped and other charac…Read-only
  • generate_idsutilpeek: Generate UUIDs or ULIDs. For numbers, bytes and picks use generate_random. Returns 1-100 new identifiers: random UUID v4, time-ordered UUID v7 (RFC 9562) or ULIDs, optionally strictly incre…Read-only
  • hmac_sign_verifyutilpeek: Returns the HMAC of a message under a shared key (sign), or whether a signature matches it in constant time (verify); handles GitHub (`sha256=` prefix accepted), Stripe `v1` (of `{t}.{raw b…Read-only
  • lookup_phone_prefixutilpeek: Look up a phone number prefix: country, line type and original network, with ambiguity. To parse a full number use parse_phone_number. Returns the country, line type, original network, time…Read-only
  • get_live_fx_ratesutilpeek: Use when an agent needs on-chain EUR/GBP/MXN/BRL/CAD/SGD/ZAR/IDR vs USD or exchange quotes for 8 pairs, not ECB. For the ECB fix or a past date use get_fx_rates. Returns on-chain FX bid/ask…Read-only
  • check_stablecoin_pegutilpeek: Check stablecoin peg: is USDC, USDT, DAI, USDe or PYUSD holding its dollar peg. For supply by chain use get_stablecoin_supply. Returns whether USDC, USDT, DAI, USDe or PYUSD holds its dolla…Read-only
  • check_token_honeypotchainpeek: Honeypot check: can this token be sold? Simulated buy and sell with tax. For a verdict that adds contract flags use check_token_safety. Returns a simulated buy and sell-back of an ERC-20 o…Read-only
  • check_token_safetychainpeek: Use when an agent needs a token risk check before buying an ERC-20 on Base or Ethereum, with a plain-language take. For a written summary and share card use token_verdict; for Solana use c…Read-only
  • token_verdictchainpeek: Token risk verdict in plain language for a Base or Ethereum token, with a shareable card. For the simulation alone use check_token_honeypot. Returns a plain-language verdict (high_risk, ca…Can change things
  • get_topic_trends_attentionutilpeek: Use when an agent must tell if interest in a topic is rising or fading: Wikipedia, Hacker News and news over time. For the articles use news_search. Returns daily topic trends for 1 to 5 to…Read-only
  • get_large_token_tradeschainpeek: Who is buying this token? Recent large trades: big buys and sells on Base or Ethereum. For Solana use get_large_solana_token_trades; for a quote at your size use get_swap_quote. Returns wh…Read-only
  • get_exchange_reserveschainpeek: Use when an agent must judge selling pressure or check reserves before depositing: a coin's exchange inflow or outflow. For DEX volume use get_dex_volume. Returns how much of a coin sits o…Read-only
  • get_protocol_tvlchainpeek: Get protocol or chain TVL with 1d and 7d change. For fees and revenue use get_protocol_fees; for DEX volume use get_dex_volume. Returns the TVL of a protocol or chain with 1d and 7d change…Read-only
  • get_stablecoin_supplychainpeek: Get stablecoin supply by coin and chain. For whether a coin holds its peg use check_stablecoin_peg. Returns stablecoin supply by coin and chain with 1d, 7d and 30d change: a coin's chains,…Read-only
  • get_dex_volumechainpeek: Get DEX volume by protocol and chain. For TVL use get_protocol_tvl. Returns DEX volume over 24 hours, 7 days and 30 days with change: a DEX's chains, a chain's largest DEXs, a DEX on a cha…Read-only
  • get_protocol_feeschainpeek: Get protocol fees and revenue. For TVL use get_protocol_tvl. Returns a protocol's fees and revenue in USD over 24 hours, 7 days, 30 days, 1 year and all time, the change, the revenue-to-fe…Read-only
  • check_solana_token_safetychainpeek: Check a Solana token for rug risk: mint and freeze authority, top holders, sell quote. For authorities alone use get_solana_token_info; for ERC-20 tokens use check_token_safety. Returns a…Read-only
  • get_large_solana_token_tradeschainpeek: Who is buying this Solana token? Recent large trades: big buys, sells and swaps by mint. For the price use get_solana_token_price. Returns the recent large buys and sells of a Solana token…Read-only
  • check_solana_reward_token_yieldchainpeek: Is this Solana reward token still paying holders? Last payout, 7d and 30d yield. For rug risk use check_solana_token_safety. Returns whether a Solana reward token still pays holders: PAYIN…Read-only
  • parse_rss_feedutilpeek: Parse an RSS or Atom feed URL into clean JSON: feed data, items, dates, audio enclosures. To find a podcast's feed use search_podcasts. Returns a public RSS, Atom or RDF feed as clean JSON.…Read-only
  • search_podcastsutilpeek: Search podcasts by name or Apple Podcasts link: RSS feed URL, show data and latest episodes. To read any other feed use parse_rss_feed. Returns the RSS feed URL, show data and latest episod…Read-only
  • transcribe_podcast_episodemlpeek: Transcribe a podcast episode from its RSS feed: a window of up to 10 minutes as text, timed segments, SRT. For your own audio use transcribe_audio. Returns a transcript window (up to 10 min f…Read-only
  • convert_unitsutilpeek: Convert units of measurement: length, weight, temperature, volume, pressure, energy, data size. For numbers in words use text_numbers. Returns a value converted between two units of one cat…Read-only
  • count_or_add_business_daysutilpeek: Count business days between two dates or add working days, skipping public holidays. For the holiday list use get_public_holidays. Returns the business days between two dates (mode count; b…Read-only
  • convert_color_check_contrastutilpeek: Convert a color between hex, RGB, HSL and OKLCH and check WCAG contrast. For contrast alone use check_wcag_contrast. Returns a CSS color (hex, rgb(), hsl() or a CSS name) as hex, rgb, hsl,…Read-only
  • check_wcag_contrastutilpeek: Check the WCAG contrast between a text color and a background color. To convert colour formats too use convert_color_check_contrast. Returns the WCAG 2.x contrast ratio of a `foreground` an…Read-only
  • text_caseutilpeek: Convert text case: title, sentence, snake, camel, kebab, ... For a URL slug use make_slug. Returns the text in another case: upper, lower, title (small words such as a, of, the kept lower-c…Read-only
  • text_linesutilpeek: Sort, dedupe, trim, shuffle or number the lines of a text. For find and replace use text_replace. Returns the text's lines transformed by `operations` in order: trim, remove_empty, dedupe (…Read-only
  • text_replaceutilpeek: Find and replace in text. To sort, dedupe or number lines use text_lines. Returns the text with `find` replaced: literally, or as a regular expression on RE2 only (linear time for any patte…Read-only
  • text_extractutilpeek: Extract emails, URLs, domains, IPs, dates and crypto addresses from text. To mask personal data use redact_pii; for names and places use extract_entities. Returns the emails, URLs, domains…Read-only
  • redact_piiutilpeek: Redact PII from text: emails, phone numbers, card numbers, IBANs, SSNs, IPs and crypto addresses. For API keys and tokens use check_text_for_secrets. Returns the text with emails, phone num…Read-only
  • text_frequencyutilpeek: Count word and n-gram frequencies in a text. For scored keyphrases use text_keywords. Returns the most frequent words or 2-3 word n-grams (n-grams never cross punctuation) with count and sh…Read-only
  • text_keywordsutilpeek: Extract the keywords and keyphrases of a text. For raw frequencies use text_frequency; for names and places use extract_entities. Returns the top keyphrases of a text by RAKE (phrases betwe…Read-only
  • text_summarizeutilpeek: Summarize a text by picking its key sentences. For paper abstracts use paper_digest; for counts use text_stats. Returns an extractive summary: the most central `sentences` (or `ratio` of th…Read-only
  • text_sentimentutilpeek: Analyze the sentiment of an English text. For your own labels use classify_zero_shot; for counts use text_stats. Returns VADER sentiment of an English text: compound (-1 to 1), positive / n…Read-only
  • text_spellcheckutilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pyspellchecker), with positions (offset, li…Read-only
  • text_unicode_inspectutilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-oriented Unicode inspection: `risk` (low / m…Read-only
  • text_encodeutilpeek: Encode or decode text: base64, hex, URL, punycode, JWT decode, ... For digests use hash_text; for a JWT's claims use decode_jwt. Returns the text encoded or decoded with `codec`: base64, ba…Read-only
  • text_loremutilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or English filler, in words (at most 10,000), s…Read-only
  • text_numbersutilpeek: Convert numbers to English words. For units use convert_units. Returns a number spelled out in English (cardinal, ordinal, year, or currency for 13 currencies, rounded half-even to the mino…Read-only
  • sec_company_lookuputilpeek: Look up a company in SEC EDGAR by ticker or CIK. For financials per year or quarter use sec_financials. Returns a US SEC registrant by ticker or CIK from SEC EDGAR: name, CIK, tickers, exch…Read-only
  • sec_financialsutilpeek: Get a US company's reported financials per fiscal year or quarter from SEC EDGAR. For the registrant and filings use sec_company_lookup. Returns a US SEC registrant's reported financials by…Read-only
  • treasury_yield_curveutilpeek: Get US Treasury yields: the daily par yield curve for a date. For SOFR, FX and oil too use get_macro_snapshot. Returns the official US Treasury daily par yield curve for a date (default: th…Read-only
  • get_macro_snapshotutilpeek: Use when an agent needs the rates backdrop before a market decision: Treasury yields, SOFR/EFFR, FX, oil and gas in one call. For the Treasury curve on a past date use treasury_yield_curve.…Read-only
  • get_local_crypto_premiumsutilpeek: Use when an agent needs to gauge local demand for crypto: the kimchi or USDT premium on local exchanges vs the global price. For global sentiment use get_crypto_fear_greed_index. Returns BT…Read-only
  • get_crypto_fear_greed_indexutilpeek: Get the crypto Fear & Greed Index: market sentiment value, label and 7-day history. For local exchange premiums use get_local_crypto_premiums. Returns the crypto Fear & Greed Index (alterna…Read-only
  • pdf_mergepdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns one PDF made of 2-20 input PDFs in order…Can change things
  • pdf_splitpdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma part of `ranges` (mode=ranges, e.g. 1-3…Can change things
  • pdf_extract_pagespdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order given (repeats allowed). Pages are 1-bas…Can change things
  • extract_pdf_imagespdfpeek: Extract embedded raster images from a PDF. Returns a ZIP of raster image XObjects and a per-page manifest; identical bytes share an asset. Up to 500 input pages, 100 selected pages, 200 imag…Can change things
  • pdf_remove_pagespdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); removed pages and everything only they ref…Can change things
  • pdf_rotatepdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pages` selection) rotated clockwise by `a…Can change things
  • pdf_compresspdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended (images re-encoded as JPEG q75 at most…Can change things
  • pdf_to_imagespdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaScript) at `dpi` 36-300, optionally gray…Can change things
  • pdf_rasterizepdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Returns a new image-only PDF: each selected…Can change things
  • pdf_redactpdfpeek: Redact a PDF: black out terms, emails, phone numbers, card numbers and areas. To test a file redacted elsewhere use pdf_redaction_check. Returns a PDF whose redacted pages are images, so the…Can change things
  • images_to_pdfpdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG or WebP; JPEGs embedded byte for byte, E…Can change things
  • pdf_watermarkpdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every page (or a `pages` selection): Latin text…Can change things
  • pdf_page_numberspdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as "Page {n} of {N}" at one of 6 positions, with font, size, colour, opaci…Can change things
  • pdf_protectpdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_password` opens it; `owner_password` lifts the…Can change things
  • pdf_unlockpdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner password, or "" for a file restricted by…Can change things
  • pdf_metadatapdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subject, keywords, creator, producer, create…Can change things
  • html_to_pdfpdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF in a sandboxed headless browser: `pape…Can change things
  • pdf_ocrpdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract OCR in 17 languages as an invisible tex…Can change things
  • pdf_inspectpdfpeek: Price: USD 0.005; Free: 3 pdfpeek calls per IP per UTC day. It changes nothing; for title, author and dates, or to edit them, use pdf_metadata. Inspect a PDF: page sizes, text layer or scan,…Read-only
  • pdf_reorder_pagespdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in `order` (1-based, at most 500), in tha…Can change things
  • pdf_croppdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside the page by the margins, measured on the…Can change things
  • pdf_resizepdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x height (pt, mm, in): fit (whole page insid…Can change things
  • pdf_outlinepdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, children}; page is the 1-based target (nul…Read-only
  • pdf_set_outlinepdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {title, page, open?, children?} (at most…Can change things
  • pdf_form_fieldspdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, checkbox, radio, choice, button, signature)…Read-only
  • pdf_fill_formpdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (names from form-fields): strings or number…Can change things
  • pdf_flattenpdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and annotations merged into the pages (`mode`…Can change things
  • pdf_repairpdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, junk before the header) and written aga…Can change things
  • pdf_attachmentspdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (default: name, filename, media type, size,…Can change things
  • pdf_pipelinepdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through the `steps` in order, each step's outpu…Can change things
  • pdf_exhibit_packpdfpeek: Produce stamped PDF exhibits and a checked index. Returns exhibit PDFs, checked CSV/JSON indexes and an optional bookmarked bundle. Input: ordered manifest, numbering, covers_count; optional…Can change things
  • image_resizeimagepeek: Resize an image. For several sizes in one call use image_thumbnail; for a box or ratio use image_crop. Returns the image resized to `width` and/or `height` (or by `scale`) with `fit` insid…Can change things
  • image_convertimagepeek: Convert an image to PNG, JPEG, WebP, GIF, TIFF, BMP, ICO or AVIF. To shrink the file use image_compress. Returns the image converted `to` png, jpeg, webp, gif, tiff, bmp, ico (16-256 px ic…Can change things
  • image_compressimagepeek: Compress an image, optionally to a byte budget. To change the format only use image_convert. Returns a smaller JPEG, WebP, AVIF or PNG (or original if not smaller). With `max_bytes`, defau…Can change things
  • image_cropimagepeek: Crop an image to a box or an aspect ratio. To scale instead use image_resize. Returns the image cropped to a box (`left`, `top`, `width`, `height`; out of bounds is a 422 crop_out_of_bound…Can change things
  • image_rotateimagepeek: Rotate or flip an image. To change the format use image_convert. Returns the image rotated clockwise by `angle` (multiples of 90 are lossless transposes; other angles are bicubic, expanded…Can change things
  • image_thumbnailimagepeek: Make 1-8 thumbnails of an image in one call. For one exact resize use image_resize. Returns 1-8 thumbnails in one call, each `sizes` entry {width, height} (at most 4096), by `fit` cover (s…Can change things
  • image_metadataimagepeek: Read an image's EXIF, GPS, XMP, IPTC and ICC metadata. To remove the metadata use image_strip_metadata. Returns an image's header and metadata without decoding its pixels: format, dimensio…Read-only
  • image_strip_metadataimagepeek: Strip an image's EXIF, GPS, XMP, IPTC and comment metadata. To read the metadata use image_metadata. Returns the image without EXIF (GPS included), XMP, IPTC, comments and text chunks: JPE…Can change things
  • image_watermarkimagepeek: Add a text watermark to an image. For PDFs use pdf_watermark. Returns the image with a text watermark (1-200 printable characters, DejaVu Sans Mono) at one of 9 positions, or `tile`d in a…Can change things
  • image_colorsimagepeek: Extract the dominant colours of an image. For a placeholder string use image_blurhash. Returns an image's palette of `k` colours (hex, rgb, share), the dominant one and the average colour…Read-only
  • image_hashimagepeek: Compute perceptual hashes of an image, optionally compared. To group duplicates among up to 100 images use image_dedupe. Returns perceptual hashes of an image (aHash, dHash, pHash, wHash;…Read-only
  • image_faviconimagepeek: Generate a favicon set from an image. For plain sizes use image_thumbnail. Returns a favicon set from one image: favicon.ico (16, 32, 48 px), favicon-32x32.png, apple-touch-icon.png (180 p…Can change things
  • image_blurhashimagepeek: Generate a BlurHash placeholder string for an image. For the palette use image_colors. Returns the BlurHash string of an image (the published woltapp algorithm, identical to the reference…Read-only
  • read_qr_barcodeimagepeek: Read every QR code and barcode in an image. To make a QR code use make_qr_code; for other text use ocr_image. Returns every code found: `type` (QR, EAN-13, EAN-8, UPC-A, UPC-E, Code128, Co…Read-only
  • embed_textsmlpeek: Create text embeddings. For images too use embed_multimodal; for pair scores use text_similarity. Returns 384-dimension embeddings of 1-64 texts with bge-small-en-v1.5 (English) or multilingu…Read-only
  • embed_multimodalmlpeek: Create multimodal embeddings: images and text in one vector space. For text only use embed_texts. Returns 768-dim vectors of texts and images (URL or base64) in ONE space (EmbeddingGemma 2),…Read-only
  • rerank_documentsmlpeek: Rerank up to 100 documents against a query. For pair scores use text_similarity. Returns 1-100 documents scored against a query by the ms-marco-MiniLM-L6-v2 cross-encoder (Apache-2.0) and sor…Read-only
  • text_similaritymlpeek: Score the semantic similarity of one or up to 50 text pairs. To rank documents against a query use rerank_documents. Returns the cosine similarity of the embeddings of each text pair (bge-sma…Read-only
  • extract_entitiesmlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entities in English text with spaCy en_core_…Read-only
  • classify_zero_shotmlpeek: Classify a text into 1-10 of your labels. For named entities use extract_entities. Returns scores of 1-10 caller-supplied labels for an English text with the nli-deberta-v3-xsmall NLI cross-e…Read-only
  • translate_textmlpeek: Translate text between English and 14 languages. For a PDF use translate_document; for audio use translate_speech; to only name the language use detect_language. Returns the text translated b…Read-only
  • check_text_for_prompt_injectionmlpeek: Check text for prompt injection before an agent acts on it. For hidden Unicode use text_unicode_inspect. Returns a `verdict`, a `score` (0-1; `injection` at 0.9 and above) and `chunks`, the f…Read-only
  • text_to_speechmlpeek: Speak text aloud in 41 voices: English, Spanish, French, Hindi, Italian, Portuguese. For audio to text use transcribe_audio. Returns the text spoken as audio. Offline neural TTS (Kokoro-82M);…Can change things
  • extract_json_with_schemamlpeek: Extract JSON from text that always matches your JSON Schema. For fixed entity types use extract_entities. Returns `data`, JSON extracted from the `text` that always parses and validates again…Read-only
  • check_url_phishingchainpeek: Check if a URL or domain is phishing or a scam. For up to 1,000 URLs use check_urls_phishing_batch; for headers use check_security_headers. Returns whether a URL's host (or a domain) is on…Read-only
  • check_urls_phishing_batchchainpeek: Check up to 1,000 URLs or domains for phishing or scams in one batch. For one URL use check_url_phishing. Returns the URL check for 1-1,000 URLs, hosts or domains in one call. A screening…Read-only
  • check_sanctions_batchchainpeek: Screen up to 1,000 crypto addresses against OFAC sanctions in one batch. For one address use check_sanctions. Returns the OFAC sanctions screen of 1-1,000 crypto addresses in one call. EVM…Read-only
  • screen_sanctions_namechainpeek: Screen a sanctions name. For crypto addresses use check_sanctions or check_sanctions_batch. Returns ranked name candidates from OFAC SDN, UN, UK and EU lists, with aliases, scores and sour…Read-only
  • get_dex_price_candleschainpeek: Get ETH or BTC OHLCV price candles from on-chain DEX swaps. For the oracle price now use get_token_price. Returns OHLCV candles for ETH (WETH/USDC) or BTC (cbBTC/USDC) in USDC from public…Read-only
  • get_account_noncechainpeek: Get an account's transaction count on Ethereum, Base or Robinhood Chain. For the next nonce with balance and gas checks use transfer_preflight; for the chain head use get_block_number. Ret…Read-only
  • get_transaction_receiptchainpeek: Get a transaction receipt on Ethereum, Base or Robinhood Chain. For value, nonce and confirmations too use get_transaction; for decoded events use decode_tx_logs. Returns the receipt of a…Read-only
  • get_event_logschainpeek: Query contract event logs over a block range, decoded. For one transaction's events use decode_tx_logs; for an address's token transfers use get_erc20_transfers. Returns eth_getLogs logs f…Read-only
  • eth_callchainpeek: Call a smart contract function read-only on Ethereum, Base or Robinhood Chain. For gas units use estimate_gas; for a raw storage slot use get_storage_at. Returns the raw ABI-encoded return…Read-only
  • estimate_gaschainpeek: Estimate the gas of a transaction on Ethereum, Base or Robinhood Chain. For the gas price use get_gas; for a whole transfer check use transfer_preflight. Returns the node's gas estimate (`…Read-only
  • get_storage_atchainpeek: Read a contract storage slot on Ethereum, Base or Robinhood Chain. For proxy implementation and admin slots use detect_proxy. Returns the 32-byte word at a storage `slot` of a contract (`v…Read-only
  • get_erc1155_balancechainpeek: Get an account's ERC-1155 token balance for a token id on Ethereum, Base or Robinhood Chain. For an ERC-721 owner use get_nft_owner. Returns balanceOf(account, id) of an ERC-1155 contract…Read-only
  • get_chain_infochainpeek: Get the chain id, latest block, head age and gas price of Ethereum, Base or Robinhood Chain. For gas alone use get_gas; for the header alone use get_block. Returns `chain_id`, the latest `…Read-only
  • get_erc20_transferschainpeek: List the ERC-20 token transfers into and out of an address on Ethereum, Base or Robinhood Chain. For current balances use get_portfolio; for top counterparties use get_wallet_counterpartie…Read-only
  • get_block_numberchainpeek: Get the latest block number, timestamp and age in seconds of Ethereum, Base or Robinhood Chain. For the full header use get_block; for chain id and gas price use get_chain_info. Returns th…Read-only
  • get_contract_codechainpeek: Get the deployed bytecode size and hash of an address, with EIP-1167 and EIP-7702 detection. For other proxy kinds use detect_proxy. Returns what is deployed at an address. Only EIP-1167 c…Read-only
  • get_total_supplychainpeek: Get an ERC-20 total supply with decimals and symbol on Ethereum, Base or Robinhood Chain. For name and symbol too use get_token_info. Returns the total supply of an ERC-20 as `total_supply…Read-only
  • get_nft_ownerchainpeek: Get the owner and token URI of an ERC-721 token on Ethereum, Base or Robinhood Chain. For the standard check and collection data use get_nft. Returns the `owner` (ownerOf) of an ERC-721 to…Read-only
  • compare_stablecoin_transfer_feeschainpeek: Compare USDC or USDT transfer fees on Base, Polygon, Ethereum, BNB, Arbitrum and Solana. For peg status use check_stablecoin_peg. Returns the fee of one USDC or USDT transfer on each chain…Read-only
  • check_address_poisoningchainpeek: Check a transfer recipient for address poisoning: lookalikes in the sender's history. For balance, gas and blacklist checks too use transfer_preflight; for OFAC use check_sanctions. Return…Read-only
  • audit_token_approvalschainpeek: List a wallet's live token approvals and get revoke transactions. For tokens already pulled out use check_wallet_drain; for one allowance use get_allowance. Returns the live ERC-20 and Per…Read-only
  • check_wallet_drainchainpeek: Check a wallet for a drain: find tokens pulled out without its signature. For live approvals with revoke transactions use audit_token_approvals. Returns a `verdict` (drained | review | cle…Read-only
  • pre_trade_checkchainpeek: Check a Uniswap V3 swap at up to five sizes: price impact and candle gap. For one quote use get_swap_quote. Returns a Uniswap V3 swap quoted at each of up to five `sizes`, smallest first:…Read-only
  • transfer_preflightchainpeek: Preflight a USDC or USDT transfer: balance, gas, nonce, blacklist, recipient, simulation. For OFAC screening use check_sanctions; for a wallet's past pulls use check_wallet_drain. Returns…Read-only
  • get_wallet_counterpartieschainpeek: List a wallet's top counterparties: who an address sends to and receives from, by count and volume. For the raw transfer list use get_erc20_transfers. Returns who `address` transacts with…Read-only
  • get_solana_balancechainpeek: Get the SOL balance of a Solana address. For SPL tokens use get_solana_token_balances. Returns `lamports` (exact integer string), `sol` (exact decimal string) and the `slot` it was read at…Read-only
  • get_solana_token_balanceschainpeek: Get the SPL token balances of a Solana wallet. For SOL use get_solana_balance; for EVM tokens use get_portfolio. Returns its SPL Token and Token-2022 accounts with a balance. At most 200 a…Read-only
  • get_solana_transactionchainpeek: Get a parsed Solana transaction by its signature. For an address's recent signatures use get_solana_signatures. An unknown or pruned transaction is a 200 `status: not_found`, charged like…Read-only
  • get_solana_signatureschainpeek: List the recent transaction signatures of a Solana address. For one transaction's details use get_solana_transaction. `next_before` is null on the last page; memos are on-chain strings cap…Read-only
  • get_solana_accountchainpeek: Get the account info of a Solana address. For a mint's supply and authorities use get_solana_token_info. Returns whether the account `exists`, `lamports`, owner program (named when well kn…Read-only
  • get_solana_token_infochainpeek: Get the supply, decimals and authorities of a Solana token mint. For the price use get_solana_token_price; for rug risk use check_solana_token_safety. Returns `supply` (raw), `decimals`, `…Read-only
  • get_solana_token_pricechainpeek: Get the USD price and liquidity of a Solana token by mint address. For large recent trades use get_large_solana_token_trades. Returns its USD price and the liquidity of its deepest pool. S…Read-only
  • take_website_screenshotsitepeek: Take a website screenshot of a public URL. For the page's text use render_page; for a PDF use html_to_pdf; for a signed record of what a page showed use capture_web_evidence. Returns a publ…Can change things
  • convert_document_to_markdownpdfpeek: Price: USD 0.005; free preview=true, 1/IP/UTC day. For PDF tables as rows use extract_pdf_tables. Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown te…Read-only
  • convert_pdf_to_wordpdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_markdown. Add output=url for a 24 h link.…Can change things
  • convert_office_to_pdfpdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by LibreOffice, base64 in `file`, with `format…Can change things
  • fill_docx_templatepdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, base64 in `file` (DOCX, or PDF with output…Can change things
  • build_pptx_deckpdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_template. Returns the deck as a .pptx, base…Can change things
  • convert_excel_to_jsonpdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns string rows (cached values; trailing empties trimmed) or…Can change things
  • extract_pdf_tablespdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use convert_bank_statement. Returns every table…Can change things
  • convert_bank_statementpdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns transactions (`date`, `description`, s…Can change things
  • build_xlsx_workbookpdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Rows are arrays or objects; a column `typ…Can change things
  • compare_documentspdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, deleted, modified, unchanged, similarity_p…Can change things
  • list_tracked_changespdfpeek: List DOCX insertions, deletions, moves, formatting changes and comments. Returns `revisions` with authors, dates, part-local paragraph context and run/paragraph-format before/after; `comment…Read-only
  • convert_markdown_to_wordpdfpeek: Convert Markdown to Word: headings, lists, tables, code and links. Returns an editable Word .docx in `file` (base64; output=url gives a 24 h link), with page_size, output_bytes and note. Inp…Can change things

And 126 more tools. The full list is in the agent view.

Audit history

  1. Nov 13Passed

What we sent

Every request in this audit, with the answer and how long it took. We never send credentials and never call a tool.

RequestAnswerTime
initializeHTTP 200356 ms
initializedHTTP 202296 ms
tools/listHTTP 2001628 ms
resources/listHTTP 200292 ms
prompts/listHTTP 200275 ms
unknown-methodHTTP 200285 ms

Run this server, or disagree with the result?

Fix the issue and it shows in the next weekly audit, or email us to ask for a re-audit or to dispute a finding. Read how we audit for what each check means.