{
  "name": "agent-fleet",
  "description": "Callable agent services. Every service answers a plain JSON POST with no key required. Free services answer straight away; priced services return an x402 challenge in USDC on Solana mainnet.",
  "discovery": "/openapi.json",
  "updatedAt": "2026-11-11T00:04:05.765Z",
  "services": [
    {
      "slug": "persian-cleanup",
      "title": "Persian text cleanup",
      "capability": "Normalise Persian typography: letterforms, half-space, punctuation, digits, stray characters - with a change log.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/persian-cleanup",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the Persian text to clean",
        "digitStyle": "persian | ascii (default persian)"
      },
      "exampleRequest": {
        "input": {
          "text": "سلام، اين يك متن 123 عربي است  ،  تا تست شود",
          "digitStyle": "persian"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "digits",
      "title": "Digit style converter",
      "capability": "Convert between Persian, Arabic-Indic and ASCII digits, and read a number out loud in Persian.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/digits",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "any text with digits",
        "to": "persian | ascii | arabic"
      },
      "exampleRequest": {
        "input": {
          "text": "سفارش 1234 با کد ٩٨",
          "to": "persian"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "slug",
      "title": "Persian-aware slug maker",
      "capability": "Turn Persian or English titles into clean URL slugs and file names.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/slug",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "title": "the title",
        "separator": "slug separator, default -"
      },
      "exampleRequest": {
        "input": {
          "title": "راهنمای کامل برنامه‌نویسی ۱۴۰۴",
          "separator": "-"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "csv-tidy",
      "title": "CSV tidy",
      "capability": "Parse a messy CSV, normalise headers, trim cells, drop duplicate rows and report what changed.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/csv-tidy",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "csv": "the CSV text"
      },
      "exampleRequest": {
        "input": {
          "csv": "Name , Age ,City\nAli, 30 , Tehran\nAli, 30 , Tehran\nSara, 25,Shiraz"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "csv-to-json",
      "title": "CSV to JSON",
      "capability": "Turn a CSV table into an array of typed JSON objects.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/csv-to-json",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "csv": "the CSV text",
        "guessTypes": "true | false (default true)"
      },
      "exampleRequest": {
        "input": {
          "csv": "name,age,active\nAli,30,true\nSara,25,false"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "json-tidy",
      "title": "JSON tidy",
      "capability": "Validate JSON, sort keys, report size and shape, and return pretty output.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/json-tidy",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "json": "the JSON text",
        "sortKeys": "true | false (default true)"
      },
      "exampleRequest": {
        "input": {
          "json": "{\"b\":2,\"a\":[1,2,{\"d\":4,\"c\":3}]}"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "date-normalise",
      "title": "Date normaliser",
      "capability": "Read many date shapes (ISO, slashes, dots, unix seconds, Persian digits) and return ISO 8601 plus a relative phrase.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/date-normalise",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "values": "array of date strings, or a single string"
      },
      "exampleRequest": {
        "input": {
          "values": [
            "2026-11-09",
            "09/11/2026",
            "09.11.2026",
            "1794212606",
            "۹ نوامبر ۲۰۲۶"
          ]
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "word-count",
      "title": "Reading stats",
      "capability": "Word, character and sentence counts with a reading-time estimate that understands Persian text.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/word-count",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the text",
        "wordsPerMinute": "reading speed, default 220"
      },
      "exampleRequest": {
        "input": {
          "text": "این یک متن نمونه است. کوتاه اما کارآمد."
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "unit-convert",
      "title": "Unit converter",
      "capability": "Convert length, mass, temperature and data sizes with exact factors.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/unit-convert",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "value": "number",
        "from": "unit",
        "to": "unit"
      },
      "exampleRequest": {
        "input": {
          "value": 12,
          "from": "km",
          "to": "mi"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "palette",
      "title": "Palette builder",
      "capability": "Build a five colour palette from one seed colour with contrast checks against white and black.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/palette",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "hex": "seed colour, e.g. #E74079",
        "scheme": "analogous | complement | triad | mono"
      },
      "exampleRequest": {
        "input": {
          "hex": "#E74079",
          "scheme": "analogous"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "regex-from-examples",
      "title": "Regex from examples",
      "capability": "Build a first-draft regular expression and a test result table from a list of strings that should match.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/regex-from-examples",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "examples": "array of strings that must match",
        "anchors": "true | false (default true)"
      },
      "exampleRequest": {
        "input": {
          "examples": [
            "INV-2026-001",
            "INV-2026-114",
            "INV-2027-020"
          ]
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "markdown-toc",
      "title": "Markdown table of contents",
      "capability": "Build a nested table of contents and heading outline from Markdown, with GitHub-style anchors.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/markdown-toc",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "markdown": "the markdown text"
      },
      "exampleRequest": {
        "input": {
          "markdown": "# Title\n\n## First\n\n### Detail\n\n## Second"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "hash",
      "title": "Hash and fingerprint",
      "capability": "SHA-256, SHA-1 and base64/base64url fingerprints of any text, for receipts and deduplication.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/hash",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the text to hash",
        "algorithms": "array, default sha-256"
      },
      "exampleRequest": {
        "input": {
          "text": "receipt-2026-11-09"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "summarise",
      "title": "Summariser",
      "capability": "Three-sentence summary plus five key points, in the same language as the input.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "model",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/summarise",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the text to summarise",
        "language": "optional, e.g. Persian"
      },
      "exampleRequest": {
        "input": {
          "text": "WURK is a marketplace where agents and humans post work. Workers submit entries and winners are paid in USDC on Solana. Agents can hold their own wallet and withdraw."
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "taglines",
      "title": "Tagline writer",
      "capability": "Five taglines and one strapline for a product, each with the angle it takes.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "model",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/taglines",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "product": "what the product is",
        "audience": "who it is for",
        "tone": "optional"
      },
      "exampleRequest": {
        "input": {
          "product": "a coffee shop run entirely by robots",
          "audience": "city commuters",
          "tone": "warm"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "names",
      "title": "Name brewer",
      "capability": "Ten candidate names with a short reason for each, plus domain-style variants.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "model",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/names",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "subject": "what needs a name",
        "style": "optional, e.g. playful, classic"
      },
      "exampleRequest": {
        "input": {
          "subject": "a pet hermit crab",
          "style": "playful"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "explain",
      "title": "Plain-language explainer",
      "capability": "Explain any term in two sentences for a named reader, then give one example.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "model",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/explain",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "term": "what to explain",
        "reader": "who is reading, e.g. a junior developer"
      },
      "exampleRequest": {
        "input": {
          "term": "idempotency key",
          "reader": "a junior developer"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "polish",
      "title": "Copy polisher",
      "capability": "Tighten a paragraph: fix grammar, cut filler, keep the voice, and list what was changed.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "model",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/polish",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the copy",
        "voice": "optional, e.g. formal, friendly"
      },
      "exampleRequest": {
        "input": {
          "text": "We are very happy to announce that we have finally launched our brand new tool which is now available for you to try out.",
          "voice": "direct"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "keywords",
      "title": "Keyword extractor",
      "capability": "Pull the terms a page should rank for, with rough frequency and intent labels.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "model",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/keywords",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "page text or topic",
        "count": "how many keywords, default 12"
      },
      "exampleRequest": {
        "input": {
          "text": "Persian text cleanup, half-space repair and typography QA for publishers and localisation teams."
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "image",
      "title": "Image generator",
      "capability": "Generate one square image from a prompt with a free keyless model and return a direct image URL.",
      "price": "0.01 USD per call",
      "priceUsd": 0.01,
      "payable": true,
      "kind": "image",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/image",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "prompt": "what to draw",
        "width": "optional, default 1024",
        "height": "optional, default 1024",
        "seed": "optional integer for a repeatable result",
        "model": "optional, default flux"
      },
      "exampleRequest": {
        "input": {
          "prompt": "a small risograph fox on cream paper, four flat inks, halftone dots",
          "width": 1024,
          "height": 1024,
          "seed": 7
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "image-variations",
      "title": "Image variation set",
      "capability": "Turn one prompt into three distinct candidate images so a caller can pick the best one.",
      "price": "0.02 USD per call",
      "priceUsd": 0.02,
      "payable": true,
      "kind": "image",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/image-variations",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "prompt": "what to draw",
        "width": "optional, default 1024",
        "height": "optional, default 1024"
      },
      "exampleRequest": {
        "input": {
          "prompt": "a cartoon alligator dunking a basketball, bright and fun, flat vector",
          "width": 1024,
          "height": 1024
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "csv-stats",
      "title": "CSV statistics",
      "capability": "Profile every column of a CSV: type guess, blanks, unique count, and min, mean and max for numeric columns.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/csv-stats",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "csv": "the CSV text, first row is the header"
      },
      "exampleRequest": {
        "input": {
          "csv": "name,score\nali,12\nsara,9\nreza,15"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "csv-to-sql",
      "title": "CSV to SQL",
      "capability": "Turn a CSV into a CREATE TABLE statement plus INSERT rows, with column types inferred and values escaped.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/csv-to-sql",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "csv": "the CSV text",
        "table": "optional table name, default data"
      },
      "exampleRequest": {
        "input": {
          "csv": "name,score\nali,12\nsara,9",
          "table": "scores"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "text-diff",
      "title": "Text diff",
      "capability": "Compare two versions of a text and report the added, removed and unchanged lines.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/text-diff",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "before": "the old text",
        "after": "the new text"
      },
      "exampleRequest": {
        "input": {
          "before": "alpha\nbeta\ngamma",
          "after": "alpha\nbeta changed\ngamma\ndelta"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "extract",
      "title": "Extract fields",
      "capability": "Pull emails, links, numbers, hashtags and mentions out of a block of text.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/extract",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "any text to scan"
      },
      "exampleRequest": {
        "input": {
          "text": "Write to sara@example.com or see https://example.com/docs. Tag #agents and @parsnegar."
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "token-count",
      "title": "Token and cost estimate",
      "capability": "Estimate how many model tokens a text costs and what that means in dollars for common price tiers.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/token-count",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the prompt or document to measure"
      },
      "exampleRequest": {
        "input": {
          "text": "Summarise this contract in five bullets and list every date it mentions."
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "cron-explain",
      "title": "Explain a cron schedule",
      "capability": "Turn a five-field cron expression into plain words.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/cron-explain",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "cron": "five fields: minute hour day month weekday"
      },
      "exampleRequest": {
        "input": {
          "cron": "0 21 * * *"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "jalali",
      "title": "Jalali and Gregorian dates",
      "capability": "Convert between the Iranian Jalali (Shamsi) calendar and the Gregorian calendar, both directions, with the Persian month name.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/jalali",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "gregorian": "YYYY-MM-DD to convert to Jalali, or",
        "jalali": "YYYY-MM-DD (Shamsi) to convert to Gregorian",
        "format": "optional: iso or long"
      },
      "exampleRequest": {
        "input": {
          "gregorian": "2026-03-21"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "persian-numbers",
      "title": "Numbers in Persian words",
      "capability": "Write a number out in Persian words, the form used on invoices and cheques, with digit and separator choices.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/persian-numbers",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "number": "the number to spell out",
        "digits": "optional: western or persian"
      },
      "exampleRequest": {
        "input": {
          "number": 1250000
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "persian-sort",
      "title": "Sort Persian lines",
      "capability": "Sort a list of Persian or mixed lines in proper Persian alphabetical order, with normalisation first.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/persian-sort",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "lines": "the lines to sort, newline separated",
        "direction": "optional: asc or desc",
        "unique": "optional: true to drop duplicates"
      },
      "exampleRequest": {
        "input": {
          "lines": "سیب\nآب\nبادام\nپسته\nزلزله"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "job-data-pack",
      "title": "Job: clean a data file end to end",
      "capability": "One call, one price: take a messy CSV and return cleaned rows, JSON, column statistics, SQL DDL plus inserts, and a receipt. The bundle agents ask for instead of four separate calls.",
      "price": "0.02 USD per call",
      "priceUsd": 0.02,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/job-data-pack",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "csv": "the messy CSV text",
        "table": "optional table name for the SQL"
      },
      "exampleRequest": {
        "input": {
          "csv": " name , amount\n ali , 12\nsara,9\nAli,12"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "job-persian-publish",
      "title": "Job: prepare Persian text for publishing",
      "capability": "One call: normalise Persian text, measure it, produce a URL slug, an excerpt, keywords and hashtags, ready to publish.",
      "price": "0.02 USD per call",
      "priceUsd": 0.02,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/job-persian-publish",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the Persian text",
        "title": "optional title used for the slug"
      },
      "exampleRequest": {
        "input": {
          "text": "كتاب ي خوب، دربارهٔ نيم فاصله و تايپوگرافي فارسي است."
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "iran-national-id",
      "title": "Check an Iranian national ID",
      "capability": "Validate a ten digit Iranian national code with its check digit, and explain why a number fails.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/iran-national-id",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "code": "the ten digit national code, Persian or western digits"
      },
      "exampleRequest": {
        "input": {
          "code": "0499370899"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "iran-card",
      "title": "Check an Iranian bank card number",
      "capability": "Validate a sixteen digit Iranian bank card number with the Luhn check and report whether a well known bank prefix is recognised.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/iran-card",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "card": "the card number, with or without separators"
      },
      "exampleRequest": {
        "input": {
          "card": "6104-3387-1234-5678"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "iran-iban",
      "title": "Check an Iranian IBAN (Sheba)",
      "capability": "Validate an Iranian Sheba number with the mod 97 check and return the normalised IR form.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/iran-iban",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "iban": "the Sheba number, with or without IR and separators"
      },
      "exampleRequest": {
        "input": {
          "iban": "IR820540102680020817909002"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "iran-mobile",
      "title": "Normalise an Iranian mobile number",
      "capability": "Clean an Iranian mobile number into +98 form and report the operator its prefix belongs to.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/iran-mobile",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "number": "any form of the number, with spaces, dashes or Persian digits"
      },
      "exampleRequest": {
        "input": {
          "number": "۰۹1۲ 345 6789"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "tehran-time",
      "title": "Tehran time conversions",
      "capability": "Convert between an instant and Tehran time in both directions, with the weekday, using the Asia/Tehran calendar, which has had no summer time since 2022.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/tehran-time",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "instant": "an ISO instant such as 2026-03-21T12:00:00Z",
        "iso": "or a Tehran wall clock such as 2026-03-21T15:30"
      },
      "exampleRequest": {
        "input": {
          "instant": "2026-03-21T12:00:00Z"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "jalali-business-days",
      "title": "Add working days in the Iranian week",
      "capability": "Add or subtract working days from a Jalali or Gregorian date, skipping Thursday and Friday, the Iranian weekend.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/jalali-business-days",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "date": "YYYY-MM-DD, Jalali or Gregorian",
        "days": "how many working days to add, negative to go back"
      },
      "exampleRequest": {
        "input": {
          "date": "2026-03-21",
          "days": 5
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "json-schema",
      "title": "Infer a JSON Schema",
      "capability": "Give a sample JSON value and get a JSON Schema draft-07 description of it, with required keys, types and nested objects or arrays.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/json-schema",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "sample": "the sample value, a JSON object or array",
        "title": "optional schema title"
      },
      "exampleRequest": {
        "input": {
          "sample": {
            "id": 12,
            "name": "sara",
            "tags": [
              "a",
              "b"
            ],
            "address": {
              "city": "Shiraz",
              "zip": null
            }
          },
          "title": "person"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "wcag-contrast",
      "title": "WCAG contrast check",
      "capability": "Give two colours and get their contrast ratio with the AA and AAA verdicts for body text, large text and interface components.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/wcag-contrast",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "foreground": "a hex colour such as #10542E",
        "background": "a hex colour such as #F6F1E4"
      },
      "exampleRequest": {
        "input": {
          "foreground": "#10542E",
          "background": "#F6F1E4"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "cron-next",
      "title": "Next cron runs",
      "capability": "Given a five field cron expression, list the next run times from now, honouring lists, ranges and step values.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/cron-next",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "cron": "five fields: minute hour day month weekday",
        "count": "optional, how many runs to list, default 5, maximum 20",
        "from": "optional ISO start instant, default now"
      },
      "exampleRequest": {
        "input": {
          "cron": "30 8 * * 0,2",
          "count": 5
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "persian-tokenize",
      "title": "Tokenise Persian text",
      "capability": "Split Persian text into sentences and words the way Persian is actually written, keeping the zero width non-joiner inside words and reporting the counts.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/persian-tokenize",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the Persian text to segment"
      },
      "exampleRequest": {
        "input": {
          "text": "کتاب‌ها خوب‌اند. به‌زودی می‌آیم! تو چه می‌گویی؟"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "persian-transliterate",
      "title": "Transliterate Persian to Latin letters",
      "capability": "Write Persian text in Latin letters, letter by letter, for slugs, file names and search, with an option for a simple readable style.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/persian-transliterate",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the Persian text",
        "style": "optional: letters (default) or simple"
      },
      "exampleRequest": {
        "input": {
          "text": "سلام دنیا"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "persian-bidi-check",
      "title": "Check right to left text safety",
      "capability": "Find invisible direction control characters and risky left-to-right runs inside right to left text, the cause of scrambled Persian and Arabic layouts.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/persian-bidi-check",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the text to inspect"
      },
      "exampleRequest": {
        "input": {
          "text": "قیمت ۱۲۳ تومان است"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "iran-postal-code",
      "title": "Check an Iranian postal code",
      "capability": "Validate a ten digit Iranian postal code, and report whether the format is one the post company issues.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/iran-postal-code",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "code": "the ten digit postal code"
      },
      "exampleRequest": {
        "input": {
          "code": "1969713751"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "jwt-decode",
      "title": "Decode a JSON web token",
      "capability": "Read the header and payload of a JSON web token without verifying it, with the expiry and issued at times in plain words.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/jwt-decode",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "token": "the token, or just the payload segment"
      },
      "exampleRequest": {
        "input": {
          "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiU2FyYSIsImV4cCI6MTc5NDI2NDAwMH0.signature"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "uuid",
      "title": "Generate identifiers",
      "capability": "Make random version four identifiers, sortable time based identifiers and short codes, in the quantity you ask for.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/uuid",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "count": "optional, how many, default 5, maximum 50",
        "idempotencyKey": "optional, any text to turn into a stable identifier"
      },
      "exampleRequest": {
        "input": {
          "count": 3
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "base64",
      "title": "Base64 encode and decode",
      "capability": "Turn text into base64 or back, with an option for the url safe alphabet that tokens and file names use.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/base64",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the text to encode",
        "base64": "or the base64 text to decode",
        "urlSafe": "optional: true for the url safe alphabet"
      },
      "exampleRequest": {
        "input": {
          "text": "سلام دنیا"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "regex-test",
      "title": "Test a regular expression",
      "capability": "Run a pattern against text and get every match with its groups and position, or the reason the pattern is invalid.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/regex-test",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "pattern": "the regular expression without slashes",
        "flags": "optional, for example gi",
        "text": "the text to search"
      },
      "exampleRequest": {
        "input": {
          "pattern": "[a-z]+@[a-z]+\\.[a-z]{2,}",
          "flags": "gi",
          "text": "write to sara@example.com or ali@test.org"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "diff-json",
      "title": "Compare two JSON values",
      "capability": "Give two JSON values and get every added, removed and changed path, with the old and new values, for auditing a payload change.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/diff-json",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "before": "the earlier value",
        "after": "the later value"
      },
      "exampleRequest": {
        "input": {
          "before": {
            "plan": "free",
            "seats": 1,
            "tags": [
              "a"
            ]
          },
          "after": {
            "plan": "pro",
            "seats": 1,
            "tags": [
              "a",
              "b"
            ],
            "region": "eu"
          }
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "markdown-table",
      "title": "Build a Markdown table",
      "capability": "Turn CSV text or a JSON array of rows into a clean Markdown table with a column alignment you choose.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/markdown-table",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "csv": "CSV text with a header row",
        "rows": "or a JSON array of objects",
        "align": "optional: left, right or centre"
      },
      "exampleRequest": {
        "input": {
          "csv": "name,score\nali,12\nsara,9",
          "align": "left"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "html-to-text",
      "title": "HTML to readable text",
      "capability": "Turn an HTML fragment into readable text, keeping link addresses, list bullets and paragraph breaks, and decoding entities.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/html-to-text",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "html": "the HTML fragment"
      },
      "exampleRequest": {
        "input": {
          "html": "<h1>Report</h1><p>See <a href=\"https://example.com\">the docs</a>.</p><ul><li>one</li><li>two</li></ul>"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "semver-compare",
      "title": "Compare version numbers",
      "capability": "Compare two version numbers, sort a list of them, and check whether a version satisfies a range such as ^1.2.0 or ~1.2.3 or >=2.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/semver-compare",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "a": "the first version",
        "b": "optional, the second version",
        "list": "optional, versions comma separated to sort",
        "range": "optional, a range to test the first version against"
      },
      "exampleRequest": {
        "input": {
          "a": "1.4.2",
          "b": "1.3.9",
          "list": "1.0.0, 1.10.0, 1.2.0",
          "range": "^1.2.0"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "islamic-date",
      "title": "Gregorian to Hijri date",
      "capability": "Convert a Gregorian date to the Hijri calendar and back with the tabular method, giving the month name, the weekday and the day of the Hijri year.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/islamic-date",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "date": "a Gregorian date such as 2026-03-21",
        "hijri": "or a Hijri date such as 1447-09-13 to convert the other way"
      },
      "exampleRequest": {
        "input": {
          "date": "2026-03-21"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "calendar-bridge",
      "title": "One date in all three calendars",
      "capability": "Give a date in any of the Gregorian, Solar Hijri (Jalali) or lunar Hijri calendar and get the same day in all three, with weekday and Persian month name.",
      "price": "0.003 USD per call",
      "priceUsd": 0.003,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/calendar-bridge",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "date": "a date, gregorian 2026-03-21 or jalali 1405-01-01 or hijri 1447-09-13",
        "calendar": "optional: which calendar the date is in, otherwise it is guessed"
      },
      "exampleRequest": {
        "input": {
          "date": "1405-01-01",
          "calendar": "jalali"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "iran-phone-geo",
      "title": "Iran phone numbers and their city",
      "capability": "Turn an Iranian landline number into its province and city, and list the landline area codes of the country.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/iran-phone-geo",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "number": "optional, a landline number such as 02188776655 or 05138400000",
        "list": "optional: true to return the whole area code table"
      },
      "exampleRequest": {
        "input": {
          "number": "05138400000"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "rtl-fix",
      "title": "Make mixed right to left text render safely",
      "capability": "Wrap the left to right runs, numbers and punctuation inside right to left text so the line stops scrambling in reports, invoices and order lines.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/rtl-fix",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the mixed text",
        "mode": "optional: isolate (default), marks or strip"
      },
      "exampleRequest": {
        "input": {
          "text": "سفارش SW-1042 به مبلغ 250,000 تومان"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "iran-holidays",
      "title": "Iranian official holidays of a year",
      "capability": "List the fixed official holidays of an Iranian year in Jalali and Gregorian with the weekday, and say plainly which holidays move and are not included.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/iran-holidays",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "jy": "optional Jalali year such as 1405",
        "gy": "optional Gregorian year such as 2026"
      },
      "exampleRequest": {
        "input": {
          "jy": 1405
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "keyboard-layout-fix",
      "title": "Fix text typed on the wrong keyboard layout",
      "capability": "Take text typed with the Persian layout while the English layout was active, or the other way round, and return what was meant, mapping every key.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/keyboard-layout-fix",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the mistyped text",
        "direction": "optional: auto (default), en-to-fa or fa-to-en"
      },
      "exampleRequest": {
        "input": {
          "text": "hsj lkjhgd"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "persian-halfspace",
      "title": "Half space, the zero width non-joiner",
      "capability": "Add or remove the Persian half space around the common prefixes and suffixes, and report exactly which words changed.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/persian-halfspace",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the Persian text",
        "mode": "optional: add (default), remove or report"
      },
      "exampleRequest": {
        "input": {
          "text": "کتابها میخواهم بزرگتر نمیام"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "jalali-age",
      "title": "Age in Jalali dates",
      "capability": "Work out an age from a birth date in Jalali or Gregorian, with the next birthday in both calendars and the date an age is reached.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/jalali-age",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "birth": "the birth date, Gregorian 1990-05-01 or Jalali 1369-02-11",
        "at": "optional date to measure at, default today",
        "age": "optional, instead give an age to find the birth year"
      },
      "exampleRequest": {
        "input": {
          "birth": "1369-02-11"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "iran-bank-bin",
      "title": "Iranian card number to its bank",
      "capability": "Turn the first six digits of an Iranian bank card into the name of the issuing bank, from a published prefix list.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/iran-bank-bin",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "card": "the card number or its first six digits"
      },
      "exampleRequest": {
        "input": {
          "card": "6104337812345678"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "regex-explain",
      "title": "Explain a regular expression",
      "capability": "Read a regular expression token by token and say in plain words what each part does, with the constructs it uses and the traps to watch.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/regex-explain",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "pattern": "the regex without slashes",
        "text": "optional sample text to test it on"
      },
      "exampleRequest": {
        "input": {
          "pattern": "^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "schema-jsonld",
      "title": "Build JSON-LD schema markup",
      "capability": "Turn plain fields into valid JSON-LD structured data for an article, product, FAQ, breadcrumb, organisation or local business, ready to paste into a page.",
      "price": "0.002 USD per call",
      "priceUsd": 0.002,
      "payable": true,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/schema-jsonld",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "type": "article, product, faq, breadcrumb, organization or localbusiness",
        "title": "the name or headline",
        "url": "the canonical url",
        "description": "optional",
        "price": "optional, for a product",
        "extra": "optional object of any further fields such as author, currency, telephone, address, datePublished, items"
      },
      "exampleRequest": {
        "input": {
          "type": "product",
          "title": "Kettle 1.7 litre",
          "url": "https://example.com/kettle",
          "price": "24.90",
          "extra": {
            "currency": "USD",
            "brand": "Example"
          }
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "ssh-key-inspect",
      "title": "Inspect an SSH public key",
      "capability": "Read an SSH public key: its type, its size in bits, the curve for elliptic keys, and the SHA-256 fingerprint, and warn you if you have pasted a private key by mistake.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/ssh-key-inspect",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "key": "the public key line, for example ssh-ed25519 AAAA... comment",
        "passphrase": "optional, set true to also report the ssh-keygen fingerprint command"
      },
      "exampleRequest": {
        "input": {
          "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ7gkQ0YtIqRPz0Y+0m3Vb4jW6s0iQnM4c2I2J3nZ0aQ user@host"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "fa-en-glossary",
      "title": "Persian and English shop and interface glossary",
      "capability": "Look up common interface, shop and support terms between Persian and English from a fixed glossary, and mark the words it does not cover instead of inventing a translation.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/fa-en-glossary",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "terms": "the words or phrases, separated by commas or new lines, or set text to translate a sentence term by term",
        "text": "optional, a sentence to annotate term by term",
        "direction": "optional: fa-en (default) or en-fa"
      },
      "exampleRequest": {
        "input": {
          "terms": "ورود, سبد خرید, پرداخت, تخفیف"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "mrz-check",
      "title": "Check a passport machine readable zone",
      "capability": "Read the two line machine readable zone of a passport or identity card, verify its check digits and return the name, number, nationality, dates and sex.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/mrz-check",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "mrz": "the two MRZ lines of a TD3 passport, or the three lines of a TD1 card"
      },
      "exampleRequest": {
        "input": {
          "mrz": "P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<\nL898902C36UTO7408122F1204159ZE184226B<<<<<10"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "isbn-issn",
      "title": "Check ISBN and ISSN numbers",
      "capability": "Validate an ISBN-10 or ISBN-13 and an ISSN by their check digit, normalise them into the hyphenated form and generate the check digit for a prefix.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/isbn-issn",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "isbn": "the ISBN, with or without hyphens",
        "issn": "or the ISSN",
        "prefix": "optional, the first digits of an ISBN-13 to complete"
      },
      "exampleRequest": {
        "input": {
          "isbn": "978-3-16-148410-0"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "vcard",
      "title": "Build or read a vCard",
      "capability": "Turn contact fields into a vCard 4.0 text block, or read a vCard back into clean JSON fields including phone numbers, email and address.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/vcard",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "name": "full name, used when building",
        "email": "optional",
        "phone": "optional",
        "organization": "optional",
        "title": "optional",
        "address": "optional",
        "url": "optional",
        "vcard": "or paste a vCard to read it"
      },
      "exampleRequest": {
        "input": {
          "name": "Sara Ahmadi",
          "email": "sara@example.com",
          "phone": "+989123456789",
          "organization": "Example Co"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "dotenv-parse",
      "title": "Read a dotenv file",
      "capability": "Turn a dotenv file into JSON, honouring comments, quotes, escapes, export prefixes and multi line values, or write JSON back out as a dotenv file.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/dotenv-parse",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "text": "the dotenv text",
        "json": "or an object to write out as dotenv lines"
      },
      "exampleRequest": {
        "input": {
          "text": "# database\nDB_HOST=\"localhost\"\nexport DB_PORT=5432\nSECRET='a b # not a comment'"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "id-codes",
      "title": "Generate ULID, Nano ID and short codes",
      "capability": "Make sortable ULIDs, short Nano IDs base62, prefixed ticketing codes and checksums, in the quantity you ask for.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/id-codes",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "count": "optional, how many, default 5, maximum 50",
        "prefix": "optional, for example ORD or INV"
      },
      "exampleRequest": {
        "input": {
          "count": 3,
          "prefix": "ORD"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "e164-phone",
      "title": "Normalise an international phone number",
      "capability": "Clean any written phone number into the E.164 form with the country code separated, using a country table, and say which part looks wrong.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/e164-phone",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "number": "the number, any punctuation",
        "country": "optional, the country the number is written in, for example IR or GB"
      },
      "exampleRequest": {
        "input": {
          "number": "0098 912 345 6789"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "swift-bic",
      "title": "Read a SWIFT BIC code",
      "capability": "Check a BIC or SWIFT code for banks, break it into institution, country, location and branch, and explain what each part means.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/swift-bic",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "bic": "the code, eight or eleven characters"
      },
      "exampleRequest": {
        "input": {
          "bic": "DEUTDEFF500"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "toml-json",
      "title": "Convert TOML to JSON",
      "capability": "Read a TOML configuration into JSON, including tables, arrays of tables, inline tables, arrays, numbers, booleans and dates, and report what it could not parse.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/toml-json",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "toml": "the TOML text"
      },
      "exampleRequest": {
        "input": {
          "toml": "title = \"demo\"\n[owner]\nname = \"Sara\"\ndob = 1979-05-27\ntags = [\"a\", \"b\"]"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "unified-diff",
      "title": "Diff two texts",
      "capability": "Compare two texts line by line and return a unified diff with change counts, plus a summary of which lines were added, removed or edited.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/unified-diff",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "before": "the earlier text",
        "after": "the later text",
        "context": "optional, lines of context, default 3",
        "name": "optional file name for the header"
      },
      "exampleRequest": {
        "input": {
          "before": "one\ntwo\nthree",
          "after": "one\nTWO\nthree\nfour"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    },
    {
      "slug": "currency-format",
      "title": "Format money amounts",
      "capability": "Format an amount with the right symbol, grouping and decimals for a currency and a locale, parse an amount written with symbols back into a number, and list the currencies it knows.",
      "price": "free",
      "priceUsd": 0,
      "payable": false,
      "kind": "deterministic",
      "endpoint": "https://agent-fleet-ppqpwu.camelai.app/s/currency-format",
      "method": "POST",
      "contentType": "application/json",
      "input": {
        "amount": "the number to format",
        "currency": "optional, default USD",
        "locale": "optional, default en-US",
        "parse": "optional, an amount written with a symbol to read back",
        "persianDigits": "optional, true to write the digits in Persian"
      },
      "exampleRequest": {
        "input": {
          "amount": 1234567.891,
          "currency": "IRR",
          "locale": "fa-IR"
        }
      },
      "receipt": "Every answer carries a receipt with a sha256 fingerprint of the request and the answer, so a caller can prove what it received."
    }
  ]
}