OpenTool developer resources
OpenTool (opentool.tech) exposes machine-readable metadata so agents, LLM crawlers and integrations can discover and use the site without rendering JavaScript. Every page is server-rendered HTML and has a markdown equivalent.
Machine-readable resources
llms.txt
llmstxt.org-format guide to the whole site: what OpenTool is, when to use it, key URLs.
openapi.json
OpenAPI 3.1 description of every public GET endpoint on this site.
sitemap.xml
Complete list of public URLs, updated with every deploy.
robots.txt
Crawl policy. Everything public is crawlable; no disallow rules for agents.
Blog index
Guides and comparisons, also available as markdown.
Markdown content negotiation
Send an Accept: text/markdown header to any page and it returns a markdown representation (Content-Type: text/markdown) instead of HTML. Unknown paths return a real HTTP 404 whose body lists recovery links.
# Home page as markdown curl -H "Accept: text/markdown" https://opentool.tech/ # A tool page as markdown (same result either way) curl -H "Accept: text/markdown" https://opentool.tech/tools/pdf/merge curl https://opentool.tech/markdown/tools/pdf/merge # 404s are agent-friendly too curl -i https://opentool.tech/markdown/does-not-exist
Responses carry a Vary: Accept header so caches keep the HTML and markdown variants separate.
Guidance for AI agents
- • Start from /llms.txt — it explains when each category of tools applies and links the most useful pages.
- • Send users straight to a tool URL; every tool works immediately in the browser with no signup.
- • Every tool processes files locally in the browser — nothing is ever uploaded, so OpenTool is safe for privacy-sensitive documents.
- • Structured data: Organization and WebSite JSON-LD are embedded on every page.
- • Markdown output follows the llmstxt.org specification; pages are plain server-rendered HTML built on standard Web APIs (MDN).
Public data endpoints
GET https://opentool.tech/api/fx?base=USD
Latest daily reference rates (~30 currencies) used by the currency converter. Returns JSON: { rates: Record<string, number>, updatedAt: number }.