← Files RTL PDFARCHIVED FILE

plugin.json

6.83 KB · Nov 6, 2026 · 07:22 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "rtl-pdf",
  "version": "1.0.0",
  "description": "Correctly shaped right-to-left PDFs for Arabic, Urdu and Persian text, and a checker for broken Arabic text.",
  "author": {
    "name": "Bilal El Homsi",
    "url": "https://rtlpdf.com"
  },
  "homepage": "https://rtlpdf.com",
  "keywords": [
    "arabic",
    "urdu",
    "persian",
    "farsi",
    "pdf",
    "rtl",
    "nastaliq"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "RTL PDF",
        "shortDescription": "Arabic, Urdu & Persian PDFs",
        "longDescription": "Arabic, Urdu and Persian only print correctly when letters are shaped and lines run right to left. RTL PDF lays the text out with a full typesetting engine (letter shaping and the Unicode bidirectional algorithm) and embeds open-licence fonts (Noto Naskh Arabic, Noto Nastaliq Urdu, Cairo, Tajawal), then returns a download link valid for 24 hours.\n\nmake_pdf_arabic: headings, paragraphs, bullet and numbered lists, tables and bold text, written as light Markdown; A4, A5 and Letter; Arabic and English in one line with numbers, dates and phone numbers kept in order; optional 3 mm bleed with crop marks; optional PDF/A with PDF/UA export.\n\ncheck_arabic_text: finds pre-shaped or reversed letters copied out of broken PDFs, Persian or Urdu letters mixed with Arabic ones, hidden direction marks and characters the fonts cannot print, and suggests a fixed text.\n\nNo AI is used inside the tools: they do not write, translate or change wording.",
        "developerName": "Bilal El Homsi",
        "category": "Productivity",
        "websiteURL": "https://rtlpdf.com",
        "supportURL": "https://rtlpdf.com/support",
        "privacyPolicyURL": "https://rtlpdf.com/privacy",
        "termsOfServiceURL": "https://rtlpdf.com/terms",
        "logo": "./assets/logo.png",
        "defaultPrompt": [
          "Make a PDF of this Arabic letter with page numbers",
          "Turn this Urdu text into an A5 PDF in Nastaliq",
          "Check this Persian text for broken letters"
        ]
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Arabic invitation to PDF; letters joined, date and time in order.",
              "prompt": "Make a PDF of this Arabic invitation:\n# \u062f\u0639\u0648\u0629\n\n\u064a\u0633\u0631\u0646\u0627 \u062f\u0639\u0648\u062a\u0643\u0645 \u0644\u062d\u0636\u0648\u0631 \u062d\u0641\u0644 \u0627\u0644\u0627\u0641\u062a\u062a\u0627\u062d \u064a\u0648\u0645 \u0627\u0644\u062e\u0645\u064a\u0633 22 \u0623\u0643\u062a\u0648\u0628\u0631 2026 \u0627\u0644\u0633\u0627\u0639\u0629 7:30 \u0645\u0633\u0627\u0621.",
              "tools_triggered": "make_pdf_arabic",
              "expected_behavior": "Calls make_pdf_arabic with the invitation text and returns a download link. The PDF shows joined Arabic letters, right-to-left lines, and 22, 2026 and 7:30 in the right order."
            },
            {
              "description": "Arabic request (in Arabic) for an A5 PDF; phone number not reversed.",
              "prompt": "\u062d\u0648\u0651\u0644 \u0647\u0630\u0627 \u0627\u0644\u062e\u0637\u0627\u0628 \u0625\u0644\u0649 \u0645\u0644\u0641 PDF \u0628\u0645\u0642\u0627\u0633 A5:\n\u0627\u0644\u0633\u064a\u062f \u0627\u0644\u0645\u062d\u062a\u0631\u0645\u060c \u0646\u0624\u0643\u062f \u0627\u0633\u062a\u0644\u0627\u0645 \u0637\u0644\u0628\u0643\u0645 \u0631\u0642\u0645 48213. \u0644\u0644\u0627\u0633\u062a\u0641\u0633\u0627\u0631: 0300-1234567",
              "tools_triggered": "make_pdf_arabic",
              "expected_behavior": "Calls make_pdf_arabic with paper A5 and returns a link. The phone number prints as 0300-1234567, not 1234567-0300."
            },
            {
              "description": "Urdu text to a Nastaliq PDF.",
              "prompt": "Turn this Urdu leave application into a PDF in Nastaliq:\n\u0628\u062e\u062f\u0645\u062a \u062c\u0646\u0627\u0628 \u067e\u0631\u0646\u0633\u067e\u0644 \u0635\u0627\u062d\u0628\u060c \u0645\u0624\u062f\u0628\u0627\u0646\u06c1 \u06af\u0632\u0627\u0631\u0634 \u06c1\u06d2 \u06a9\u06c1 \u0645\u062c\u06be\u06d2 3 \u062f\u0646 \u06a9\u06cc \u0686\u06be\u0679\u06cc \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4",
              "tools_triggered": "make_pdf_arabic",
              "expected_behavior": "Calls make_pdf_arabic (language ur or auto, font nastaliq or auto) and returns a link to a PDF set in Noto Nastaliq Urdu with correct Nastaliq joins."
            },
            {
              "description": "Persian price list as a right-to-left table.",
              "prompt": "Make a printable Persian price list from this table:\n| \u06a9\u0627\u0644\u0627 | \u0642\u06cc\u0645\u062a |\n|---|---|\n| \u0686\u0627\u06cc | \u06f1\u06f2\u06f0\u066c\u06f0\u06f0\u06f0 |\n| \u0642\u0647\u0648\u0647 | \u06f1\u06f8\u06f0\u066c\u06f0\u06f0\u06f0 |",
              "tools_triggered": "make_pdf_arabic",
              "expected_behavior": "Calls make_pdf_arabic with the table text and returns a link. The PDF has a right-to-left table with a bold header row and Persian digits in order."
            },
            {
              "description": "Broken Arabic copied out of a PDF is diagnosed and fixed.",
              "prompt": "I copied this from a PDF and the letters look broken, can you fix it? \ufee2\ufedc\ufe91 \ufe8e\ufe92\ufea3\ufeae\ufee3",
              "tools_triggered": "check_arabic_text",
              "expected_behavior": "Calls check_arabic_text. It reports pre-shaped glyph characters and reversed order, and returns fixed_text equal to the Arabic phrase meaning 'welcome to you', which the assistant shows to the user."
            }
          ],
          "negative": [
            {
              "description": "Translation request: the tools do not translate, so no tool should be called.",
              "prompt": "Translate this paragraph into Arabic: Our office is closed on Friday."
            },
            {
              "description": "English-only document: no Arabic-script text, so make_pdf_arabic should not be called.",
              "prompt": "Make a PDF of my English CV: John Smith, Software Engineer, 10 years of experience."
            },
            {
              "description": "Image request: the tools do not make images, so no tool should be called.",
              "prompt": "Create an image of Arabic calligraphy for my wall."
            }
          ]
        },
        "demo_recording_url": "https://rtlpdf.com/static/rtl-pdf-chatgpt-demo.mp4",
        "commerce": false,
        "commerce_description": "No commerce in ChatGPT. The plugin is free and shows no plans, prices, upgrade prompts or checkout links."
      },
      "publication": {
        "release_notes": "First release: make_pdf_arabic and check_arabic_text.",
        "countries": []
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 8a42db46c61ae03e272ad81c65ac54e5fee7c317b47a201b513a2da8539eed11