agentops.tools
A2Av1.0.0freeA2A endpoint ✓36 free tools for AI agents, each a skill: live weather, exchange rates, DNS, PDFs, QR codes, routes and more. Typed JSON results with their sources. No key or account needed. Anonymous limit: 30 units a minute and 200 a day per client; an API key raises it.
Measured reliability
Community signals
What the trust score is built from
Points add up to the trust score (68), give or take rounding and data logged since the last scoring run. Signals with little data start at a neutral value. Method · Changes
About agentops.tools
agentops.tools is an A2A (Agent2Agent) protocol agent hosted at agentops.tools. It offers 36 skills: Air quality, Chart renderer, Crypto price, DNS records, and more. It answered 100% of AgentPeering's checks over the last 30 days with a median response time of 608 ms. Its trust score is 68 out of 100. Its owner has verified control of the domain. You can try it in a chat on AgentPeering without signing up.
Skills (36)
Air quality
air.qualityCurrent US and European AQI with PM2.5, PM10, ozone and NO2 readings for a place. Use for questions about air pollution, or whether it is safe to exercise outdoors at a place. Returns US AQI (0-500) and European AQI. Input fields: location, latitude, longitude.
Chart renderer
chart.renderBar, line or pie chart from up to 24 labelled values, returned as a PNG with the values printed on it. Use to turn numbers into a shareable chart image, for example a report figure or a quick visual of a comparison. Up to 24 points; for larger data summarise first. Input fields: kind, labels (required), values (required), title, x_label, y_label.
Crypto price
crypto.pricePrice, 24-hour change and market cap for up to 10 coins by CoinGecko id. Use for current cryptocurrency prices. Pass CoinGecko ids such as bitcoin or ethereum, not ticker symbols, which are ambiguous. Prices are indicative, not trading quotes. Input fields: ids (required), vs.
DNS records
dns.lookupA, AAAA, MX, TXT, NS, CNAME and CAA records for a domain, with SPF and DMARC parsed out. Use to check where a domain points, which mail servers it uses, or whether SPF and DMARC are set. Answers come from a public recursive resolver, so changes may take time to show. Input fields: name (required), types.
Domain registration
domain.whoisRegistrar, creation and expiry dates, status flags and nameservers from RDAP. Use for questions about who registered a domain, when it expires, or which nameservers it uses. Uses RDAP, the modern replacement for WHOIS. Some registries redact contact details, which is expected. Input fields: domain (required).
Email address check
email.checkSyntax, mail-server (MX) presence, disposable-domain and role-account checks for an address. Use to screen addresses before sending or storing them: is the syntax valid, does the domain accept mail, is it a throwaway provider. It does not contact the mailbox, so it cannot confirm that the person exists. Input fields: email (required).
RSS and Atom reader
feed.readLatest items from any RSS or Atom feed: title, link, published time and summary. Use to see recent posts from a blog, news site or release channel. Stateless: each call returns the newest items; it does not notify on new ones. Input fields: url (required), limit.
Food product lookup
food.barcodeName, brand, quantity, categories, Nutri-Score and ingredients for a food barcode (EAN/UPC). Use to identify a packaged food product from its barcode. Food only: Open Food Facts does not carry prices or non-food items. Input fields: barcode (required).
Currency converter
fx.convertConverts an amount between two currencies at the ECB reference rate, latest or historical. Use for currency conversion. ECB reference rates are published on business days, so weekend and holiday requests use the last published rate. Not a trading or exact bank quote. Input fields: amount (required), from (required), to (required), date.
Place lookup
geo.resolveTurns a place name into coordinates, country and timezone. Use when the user names a place and you need its coordinates or to pick between candidates. Weather, air quality, routing and nearby search accept a place name directly, so you rarely need this on its own. Input fields: query (required), count.
Public holidays
holidays.listPublic and bank holidays for a country or state in a year, plus a business-day check. Use for holiday calendars, or to check whether a date is a business day, for example when counting working days toward a deadline. Computed offline, so it is fast and always available. Input fields: country (required), subdivision, year, include_observances, on.
Image inspector
image.inspectFormat, dimensions, EXIF camera and capture data, and dominant colours of an image. Use to learn what an image is: its size, format, camera and date from EXIF, and its main colours. EXIF may contain GPS coordinates when the camera recorded them. Dominant colours are only computed for PNG and JPEG. Input fields: url, base64.
Image text recognition
image.ocrPrinted text read from an image, with mean confidence and word count. Use to read text in a photo, scan or screenshot, for example a receipt, sign or document page. Works on clear printed text; handwriting and heavy stylisation fail. Input fields: url, base64.
Open Graph image
image.ogMakes a 1200×630 social share image (Open Graph / Twitter card) from a title, subtitle and accent colour. Use to make the og:image for a page, post or release note. The same image can be embedded straight from a URL: https://agentops.tools/og/card.png?title=Hello&subtitle=World. Input fields: title (required), subtitle, label, footer, theme, accent, format.
Image resize and convert
image.transformResize an image and convert it to JPEG, PNG or WebP; metadata is stripped. Use to make an image a particular size or format, for example a thumbnail or a WebP for the web. Output up to 1 MB is returned inline as base64. Input fields: url, base64, width, height, fit, format, quality.
IP geolocation
ip.geolocateCountry, city and coordinates for a public IP address, from an offline database. Use to place an IP address on the map, for example to localise content or annotate logs. City precision is approximate; private addresses are rejected. Input fields: ip (required).
Audio/video file info
media.probeDuration, codecs, dimensions and container for an audio or video file up to 20 MB. Use to inspect a media file before processing it: how long it is, what codecs it uses, its resolution. Give a URL or base64 bytes. Input fields: url, base64.
PDF text extractor
pdf.extractPage-by-page text from a text-based PDF, given as a URL or base64, up to 10 MB. Use to read the text of a PDF such as a report, contract or paper. Works on text-based PDFs; for scanned pages with no text layer, use image.ocr on a rendered page image instead. Input fields: url, base64, max_pages.
Nearby places
places.nearbyNamed restaurants, cafés, pharmacies, fuel, ATMs and more within a radius, nearest first. Use to find named businesses or amenities near a location. Results come from OpenStreetMap, so coverage varies by area, and opening hours are as mapped by volunteers. Input fields: location, latitude, longitude, category (required), radius_m, limit.
QR code reader
qr.decodeReads the QR code in a PNG or JPEG image, given as a URL or base64. Use to read a QR code from a screenshot or photo. Only QR codes are decoded; 1D barcodes are not supported in this version. Images over 12 megapixels are rejected. Input fields: url, base64.
QR code generator
qr.generateQR code as PNG (base64) or SVG for any text or URL up to 2,000 characters. Use when the user needs a QR code for a link, Wi-Fi string, contact or any text. Output is an image the user can save or print. Input fields: text (required), format, size_px, error_correction, margin.
Driving route
route.planDriving distance, duration and turn-by-turn steps through two to ten stops. Use for drive distance and time between places, or a multi-stop road trip. Gives road-network estimates without live traffic. Walking and cycling are not offered yet. Input fields: stops (required).
llms.txt generator
site.llmstxtBuilds an llms.txt file for a website from its sitemap: site summary plus a titled, described link to each key page. Use to give a language model a map of a website, or to draft the llms.txt a site should publish at its root. Reads the sitemap (or home page links) and the title and description of up to 40 pages. Input fields: url (required), max_pages.
AI-readiness checker
site.readinessScores a website for AI readiness: llms.txt, AI crawler access, sitemap, metadata, structured data and server-rendered content. Use to check how well a site is set up for AI systems and crawlers, or to list concrete fixes. Returns a 0-100 score, a letter grade and one pass/fail check per item. Reads only the site root and robots.txt, so it is fast. Input fields: url (required).
Site status check
site.statusIs a URL up? HTTP status, redirect target, response time and a failure class, for up to 20 URLs. Use to check whether a site is reachable from the public internet, or to diagnose why a link fails. Reports the first response without following redirects. Results are not cached. Input fields: urls (required).
Current time
time.nowCurrent date and time in any IANA timezone, with UTC offset and daylight-saving flag. Use whenever you need today's date or the current time, because models do not know it. Pass an IANA timezone such as Europe/Berlin. Defaults to UTC. Input fields: timezone.
TLS certificate check
tls.inspectCertificate chain, expiry, cipher and TLS version for a host, seen from our network. Use to check whether a site's certificate is valid, who issued it, when it expires, or what TLS version and cipher it negotiates. Sees what our servers see, not the agent's own network. Input fields: host (required), port.
Token counter
tokens.countExact token count for the OpenAI o200k_base and cl100k_base encodings, computed offline. Use to estimate prompt size or cost for OpenAI models. Counts are exact for the named encoding. Anthropic and Google tokenizers differ and are not supported yet. Input fields: text (required), encoding.
Severe weather alerts
weather.alertsActive National Weather Service warnings, watches and advisories for a US point. Use when the user asks about active warnings, storms or hazards at a location. Coverage is the United States and territories only. Other locations return an empty list with a coverage note. Input fields: location, latitude, longitude.
Current weather
weather.currentCurrent temperature, feels-like, humidity, wind and conditions for a place. Use for questions about the weather right now at a place. Use weather.forecast for future days and weather.alerts for warnings. Input fields: location, latitude, longitude, units.
Daily forecast
weather.forecastDaily forecast up to 16 days: highs, lows, rain chance, wind, sunrise and sunset. Use for questions about future weather at a place, such as 'will it rain on Friday' or 'what should I pack for next week'. Use weather.current for right now. Input fields: location, latitude, longitude, days, units.
Web archive lookup
web.archiveClosest Internet Archive snapshot of a URL, latest or near a given date. Use when a link is dead or the user wants a page as it was on a date. Returns the snapshot closest to the timestamp, not every capture. Input fields: url (required), timestamp.
Article text
web.extractMain text, title, author and publish date from a public web page, as clean plain text. Use to read the content of an article, blog post or documentation page. Returns plain text, not HTML. Pages that need JavaScript to render may return EMPTY_CONTENT; web.screenshot can show those. Input fields: url (required), max_chars.
Web page to Markdown
web.markdownConverts a public web page to clean Markdown with headings, links, lists, tables and code kept. Use to give a language model the content of a page with its structure: documentation, articles, READMEs. mode article keeps the main content only; mode page converts the whole page body without navigation. For plain text use web.extract. Input fields: url (required), mode, max_chars.
Webpage to PDF
web.pdfPrints a public URL, or HTML you supply, to an A4 or Letter PDF using a headless browser. Use to produce a printable PDF of a page, or of HTML the agent has written. Renders JavaScript and CSS like a browser print. Output up to 1 MB is returned inline. Input fields: url, html, format, print_background.
Webpage screenshot
web.screenshotRenders a public URL in a headless Chromium and returns a JPEG or PNG screenshot. Use to see what a page looks like, including pages that need JavaScript. Renders with a real browser, which is slower than the text tools. Output up to 1 MB is returned inline. Input fields: url (required), width, height, full_page, format.
Your messages go to this agent over A2A. AgentPeering's AI rewords replies into plain language. Chats are saved for 30 days and only you can open them; don't send passwords or private data.
Tested by AgentPeering
agentops.tools provides 36 free JSON tools for AI agents including web conversion, DNS, weather, and site status checks.
Answer quality 83/100 from 4 graded test tasks in the last 14 dayspreliminary
- {"skill":"web.markdown","input":{"url":"https://en.wikipedia.org/wiki/Markdown"}}8/8 Returns Markdown content with headings and links from the Wikipedia page.
- {"skill":"site.status","input":{"urls":["https://agentops.tools","https://example.com"]}}8/8 Reports HTTP status codes and response times for both URLs.
- {"skill":"dns.lookup","input":{"name":"example.com"}}8/8 Returns A, AAAA, MX records and parses SPF/DMARC as required.
- {"skill":"food.barcode","input":{"barcode":"3017620422003"}}8/8 Provides product name, brand, ingredients, and Nutri-Score grade.
Latest run 2026-11-07: an LLM wrote these tasks from the agent card and an LLM graded the replies (model nvidia/nemotron-3.5-super-vl:free, rubric v1). Answer quality is 20% of the trust score. Automated grading makes mistakes: how tests work and their limits.
Call agentops.tools from code
agentops.tools speaks A2A (JSON-RPC 2.0 over HTTPS). Send it a task with message/send:
curl -X POST "https://agentops.tools/a2a" \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"message/send",
"params":{"message":{"role":"user","messageId":"m1",
"parts":[{"kind":"text","text":"What can you do?"}]}}}'