<?xml version="1.0" encoding="UTF-8"?>
<tools xmlns="https://agentmediatools.com/tools.xml"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       name="Agent Media Tools"
       description="All-in-one media processing &amp; agent utilities"
       base_url="https://agentmediatools.com"
       version="2.0.0"
       count="41">

  <platform>
    <name>Agent Media Tools</name>
    <description>All-in-one media processing &amp; agent utilities platform. Every tool is available as a REST API endpoint for both humans and AI agents.</description>
    <base_url>https://agentmediatools.com</base_url>
    <docs_url>https://agentmediatools.com/docs</docs_url>
    <version>2.0.0</version>
    <discovery>
      <llms_txt>/llms.txt</llms_txt>
      <openapi_json>/openapi.json</openapi_json>
      <tools_json>/tools.json</tools_json>
      <capabilities_json>/capabilities.json</capabilities_json>
      <mcp_json>/mcp.json</mcp_json>
      <sitemap_xml>/sitemap.xml</sitemap_xml>
      <robots_txt>/robots.txt</robots_txt>
    </discovery>
  </platform>

  <mcp>
    <available>true</available>
    <protocol>Model Context Protocol</protocol>
  </mcp>

  <tool id="image-resize">
    <name>Resize Image</name>
    <description>Resize, crop, and convert images to desired dimensions and formats (JPEG, PNG, WebP, AVIF).</description>
    <category>Image Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/resize-image</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="image" type="file" required="true">Image file to resize</input>
      <input name="width" type="integer" required="false">Target width in pixels</input>
      <input name="height" type="integer" required="false">Target height in pixels</input>
      <input name="format" type="string" required="false">Output format: jpeg, png, webp, avif</input>
    </inputs>
  </tool>

  <tool id="image-convert">
    <name>Convert Image</name>
    <description>Convert images between formats with quality control.</description>
    <category>Image Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/convert-image</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="image" type="file" required="true"></input>
      <input name="format" type="string" required="false"></input>
      <input name="quality" type="integer" required="false"></input>
    </inputs>
  </tool>

  <tool id="image-compress">
    <name>Compress Image</name>
    <description>Compress images with quality control to reduce file size.</description>
    <category>Image Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/compress-image</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="image" type="file" required="true"></input>
      <input name="quality" type="integer" required="false"></input>
    </inputs>
  </tool>

  <tool id="image-analyze">
    <name>Analyze Image</name>
    <description>Extract image metadata: dimensions, format, file size, color space.</description>
    <category>Image Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/analyze-image</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="image" type="file" required="true"></input>
    </inputs>
  </tool>

  <tool id="image-crop">
    <name>Crop Image</name>
    <description>Crop images to specific dimensions.</description>
    <category>Image Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/crop-image</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="image" type="file" required="true"></input>
      <input name="width" type="integer" required="true"></input>
      <input name="height" type="integer" required="true"></input>
      <input name="x" type="integer" required="false"></input>
      <input name="y" type="integer" required="false"></input>
    </inputs>
  </tool>

  <tool id="pdf-merge">
    <name>Merge PDFs</name>
    <description>Merge multiple PDF files into a single document.</description>
    <category>PDF Tools</category>
    <tier>login</tier>
    <method>POST</method>
    <endpoint>/api/merge-pdf</endpoint>
    <auth_required>true</auth_required>
    <inputs>
      <input name="pdfs" type="file[]" required="true">PDF files (up to 10)</input>
    </inputs>
  </tool>

  <tool id="pdf-split">
    <name>Split PDF</name>
    <description>Split a PDF into individual pages.</description>
    <category>PDF Tools</category>
    <tier>login</tier>
    <method>POST</method>
    <endpoint>/api/split-pdf</endpoint>
    <auth_required>true</auth_required>
    <inputs>
      <input name="pdf" type="file" required="true"></input>
    </inputs>
  </tool>

  <tool id="pdf-compress">
    <name>Compress PDF</name>
    <description>Reduce PDF file size.</description>
    <category>PDF Tools</category>
    <tier>login</tier>
    <method>POST</method>
    <endpoint>/api/compress-pdf</endpoint>
    <auth_required>true</auth_required>
    <inputs>
      <input name="pdf" type="file" required="true"></input>
    </inputs>
  </tool>

  <tool id="pdf-rotate">
    <name>Rotate PDF</name>
    <description>Rotate PDF pages (90/180/270 degrees).</description>
    <category>PDF Tools</category>
    <tier>login</tier>
    <method>POST</method>
    <endpoint>/api/pdf-rotate</endpoint>
    <auth_required>true</auth_required>
    <inputs>
      <input name="pdf" type="file" required="true"></input>
      <input name="angle" type="integer" required="false"></input>
      <input name="pages" type="string" required="false"></input>
    </inputs>
  </tool>

  <tool id="pdf-to-text">
    <name>PDF to Text</name>
    <description>Extract text from PDF files.</description>
    <category>PDF Tools</category>
    <tier>login</tier>
    <method>POST</method>
    <endpoint>/api/pdf-to-text</endpoint>
    <auth_required>true</auth_required>
    <inputs>
      <input name="pdf" type="file" required="true"></input>
    </inputs>
  </tool>

  <tool id="pdf-to-images">
    <name>PDF to Images</name>
    <description>Convert PDF pages to PNG images.</description>
    <category>PDF Tools</category>
    <tier>login</tier>
    <method>POST</method>
    <endpoint>/api/pdf-to-images</endpoint>
    <auth_required>true</auth_required>
    <inputs>
      <input name="pdf" type="file" required="true"></input>
    </inputs>
  </tool>

  <tool id="images-to-pdf">
    <name>Images to PDF</name>
    <description>Combine images into a single PDF.</description>
    <category>PDF Tools</category>
    <tier>login</tier>
    <method>POST</method>
    <endpoint>/api/images-to-pdf</endpoint>
    <auth_required>true</auth_required>
    <inputs>
      <input name="images" type="file[]" required="true">Images (max 50)</input>
    </inputs>
  </tool>

  <tool id="qr-code">
    <name>QR Code Generator</name>
    <description>Generate QR codes from text or URLs.</description>
    <category>Utility Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/qrcode</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="text" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="pastebin">
    <name>Pastebin</name>
    <description>Create and retrieve text pastes. Max 500KB.</description>
    <category>Agent Utilities</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/paste</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="content" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="short-url">
    <name>Short URL</name>
    <description>Create short redirect URLs.</description>
    <category>Agent Utilities</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/shorten</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="url" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="burn-note">
    <name>Burn Note</name>
    <description>Self-destructing notes that delete after being read.</description>
    <category>Agent Utilities</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/burn-note</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="content" type="string" required="true"></input>
      <input name="max_views" type="integer" required="false"></input>
    </inputs>
  </tool>

  <tool id="dead-drop">
    <name>Dead Drop</name>
    <description>One-time passphrase-protected messages.</description>
    <category>Agent Utilities</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/dead-drop</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="content" type="string" required="true"></input>
      <input name="passphrase" type="string" required="false"></input>
    </inputs>
  </tool>

  <tool id="webhook-inbox">
    <name>Webhook Inbox</name>
    <description>Create webhook receivers that collect HTTP requests for inspection.</description>
    <category>Agent Utilities</category>
    <tier>login</tier>
    <method>POST</method>
    <endpoint>/api/webhook-inbox</endpoint>
    <auth_required>true</auth_required>
  </tool>

  <tool id="jwt-decode">
    <name>JWT Decoder</name>
    <description>Decode and inspect JWTs (header + payload).</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/jwt-decode</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="token" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="uuid-generator">
    <name>UUID Generator</name>
    <description>Generate random UUIDs (v4).</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/uuid</endpoint>
    <auth_required>false</auth_required>
  </tool>

  <tool id="password-generator">
    <name>Password Generator</name>
    <description>Generate secure random passwords.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/password</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="length" type="integer" required="false"></input>
      <input name="numbers" type="boolean" required="false"></input>
      <input name="symbols" type="boolean" required="false"></input>
    </inputs>
  </tool>

  <tool id="ip-lookup">
    <name>IP Lookup</name>
    <description>Look up your IP address and geolocation.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/ip</endpoint>
    <auth_required>false</auth_required>
  </tool>

  <tool id="timestamp-converter">
    <name>Timestamp Converter</name>
    <description>Convert between Unix timestamps and dates.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/timestamp</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="value" type="string" required="false"></input>
    </inputs>
  </tool>

  <tool id="base64">
    <name>Base64 Encode/Decode</name>
    <description>Encode/decode Base64 strings.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/base64</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="text" type="string" required="true"></input>
      <input name="action" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="hash-generator">
    <name>Hash Generator</name>
    <description>Generate MD5, SHA-1, SHA-256, SHA-384, SHA-512 hashes.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/hash</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="text" type="string" required="true"></input>
      <input name="algo" type="string" required="false"></input>
    </inputs>
  </tool>

  <tool id="json-formatter">
    <name>JSON Formatter</name>
    <description>Format, validate, and beautify JSON.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/json-format</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="input" type="string" required="true"></input>
      <input name="action" type="string" required="false"></input>
    </inputs>
  </tool>

  <tool id="csv-converter">
    <name>CSV Converter</name>
    <description>Convert between JSON and CSV formats.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/csv-convert</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="input" type="string" required="true"></input>
      <input name="direction" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="unit-converter">
    <name>Unit Converter</name>
    <description>Convert length, weight, temperature, data, time units.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/units</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="value" type="number" required="true"></input>
      <input name="from" type="string" required="true"></input>
      <input name="to" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="text-diff">
    <name>Text Diff</name>
    <description>Compare two texts and show differences.</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/diff</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="a" type="string" required="true"></input>
      <input name="b" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="token-counter">
    <name>Token Counter</name>
    <description>Count tokens in text (LLM context estimation).</description>
    <category>Dev Tools</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/token-count</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="text" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="pipeline-runner">
    <name>Pipeline Runner</name>
    <description>Execute multi-step processing pipelines chaining tools together.</description>
    <category>Agent API</category>
    <tier>agent</tier>
    <method>POST</method>
    <endpoint>/api/pipeline/run</endpoint>
    <auth_required>true</auth_required>
    <auth_type>Bearer token</auth_type>
    <inputs>
      <input name="steps" type="array" required="true"></input>
    </inputs>
  </tool>

  <tool id="tool-chain">
    <name>Tool Chain</name>
    <description>Chain tool outputs as subsequent tool inputs.</description>
    <category>Agent API</category>
    <tier>free</tier>
    <method>POST</method>
    <endpoint>/api/chain</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="steps" type="array" required="true"></input>
    </inputs>
  </tool>

  <tool id="tool-search">
    <name>Tool Search</name>
    <description>Search available tools by query.</description>
    <category>Discovery</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/search</endpoint>
    <auth_required>false</auth_required>
    <inputs>
      <input name="q" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="agent-docs">
    <name>Agent Documentation</name>
    <description>Get agent integration docs, API reference, auth guide, and code samples.</description>
    <category>Discovery</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/agent-docs</endpoint>
    <auth_required>false</auth_required>
  </tool>

  <tool id="live-stats">
    <name>Live Stats</name>
    <description>Platform usage statistics: requests, bot breakdown, top tools.</description>
    <category>Discovery</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/stats/live</endpoint>
    <auth_required>false</auth_required>
  </tool>

  <tool id="agent-video-download">
    <name>Video Download (Agent API)</name>
    <description>Download videos from URLs.</description>
    <category>Agent API</category>
    <tier>agent</tier>
    <method>POST</method>
    <endpoint>/api/agent/video-download</endpoint>
    <auth_required>true</auth_required>
    <auth_type>Bearer token</auth_type>
    <inputs>
      <input name="url" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="agent-audio-extract">
    <name>Audio Extract (Agent API)</name>
    <description>Extract audio from video URLs.</description>
    <category>Agent API</category>
    <tier>agent</tier>
    <method>POST</method>
    <endpoint>/api/agent/audio-extract</endpoint>
    <auth_required>true</auth_required>
    <auth_type>Bearer token</auth_type>
    <inputs>
      <input name="url" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="agent-image-proxy">
    <name>Image Proxy (Agent API)</name>
    <description>Proxy images and bypass CORS.</description>
    <category>Agent API</category>
    <tier>agent</tier>
    <method>POST</method>
    <endpoint>/api/agent/image-proxy</endpoint>
    <auth_required>true</auth_required>
    <auth_type>Bearer token</auth_type>
    <inputs>
      <input name="url" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="agent-scrape">
    <name>Web Scrape (Agent API)</name>
    <description>Scrape web pages for content.</description>
    <category>Agent API</category>
    <tier>agent</tier>
    <method>POST</method>
    <endpoint>/api/agent/scrape</endpoint>
    <auth_required>true</auth_required>
    <auth_type>Bearer token</auth_type>
    <inputs>
      <input name="url" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="agent-video-info">
    <name>Video Info (Agent API)</name>
    <description>Get video metadata (duration, resolution, format).</description>
    <category>Agent API</category>
    <tier>agent</tier>
    <method>POST</method>
    <endpoint>/api/agent/video-info</endpoint>
    <auth_required>true</auth_required>
    <auth_type>Bearer token</auth_type>
    <inputs>
      <input name="url" type="string" required="true"></input>
    </inputs>
  </tool>

  <tool id="shop-list-items">
    <name>Shop — List Items</name>
    <description>List available agent scripts and bundles.</description>
    <category>Shop</category>
    <tier>free</tier>
    <method>GET</method>
    <endpoint>/api/shop/items</endpoint>
    <auth_required>false</auth_required>
  </tool>

  <tool id="agent-provision">
    <name>Provision Human Account</name>
    <description>Invite a human to activate an account via magic-link email. Agent polls for one-time API key after human sets password.</description>
    <category>Agent Auth</category>
    <tier>agent</tier>
    <method>POST</method>
    <endpoint>/api/agent/provision</endpoint>
    <auth_required>false</auth_required>
    <auth_note>Bearer optional; required to poll status</auth_note>
    <mcp_tools>
      <tool>provision_human_account</tool>
      <tool>get_provision_status</tool>
    </mcp_tools>
    <inputs>
      <input name="email" type="string" required="true"></input>
      <input name="name" type="string" required="false"></input>
      <input name="agent_label" type="string" required="false"></input>
    </inputs>
  </tool>

</tools>