← Files OpenAjanARCHIVED FILE

plugin.json

6.82 KB · Nov 6, 2026 · 00:15 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "openajan",
  "version": "1.4.1",
  "description": "Order food and book appointments at local shops \u2014 restaurants, caf\u00e9s, barbers, beauty salons, florists and repair shops. Live menus, prices and free times. Pay at the shop.",
  "author": {
    "name": "Otonom",
    "email": "hej@openajan.com",
    "url": "https://openajan.com"
  },
  "homepage": "https://openajan.com",
  "keywords": [
    "local shops",
    "food ordering",
    "restaurant",
    "booking",
    "appointments",
    "barber",
    "florist",
    "pickup"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "OpenAjan",
        "shortDescription": "Order & book at local shops",
        "longDescription": "OpenAjan connects ChatGPT to local shops: restaurants, caf\u00e9s, barbers, beauty salons, florists and repair shops.\n\nWhat you can do:\n- Find shops by what you need, where and when \u2014 even without knowing a shop name\n- See live menus, prices (incl. VAT) and opening hours\n- Check free booking times\n- Place an order or booking, only after you say yes\n- Check whether the shop has confirmed\n\nPayment happens at the shop; OpenAjan never handles money. When you connect you can set a maximum amount per order and a monthly budget. Every order comes with a receipt signed by OpenAjan.\n\nShops are currently in Denmark, Germany and T\u00fcrkiye. Try it safely with the shop \"OpenAjan Demo\": orders there are confirmed automatically and nothing is prepared or charged.",
        "developerName": "OpenAjan",
        "category": "Productivity",
        "websiteURL": "https://openajan.com",
        "privacyPolicyURL": "https://openajan.com/juridisk.php?t=privat",
        "termsOfServiceURL": "https://openajan.com/juridisk.php?t=forbruger",
        "defaultPrompt": [
          "Show me the menu of OpenAjan Demo",
          "Order one Margherita from OpenAjan Demo for pickup",
          "Book a table for 2 at OpenAjan Demo tomorrow at 18:00"
        ],
        "brandColor": "#1F5EFF",
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/logo.png",
        "supportURL": "https://openajan.com/om.php"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Find the sandbox shop by name.",
              "prompt": "Find the shop OpenAjan Demo.",
              "tools_triggered": "find_shops",
              "expected_behavior": "find_shops returns the shop OpenAjan Demo (slug openajan-demo, K\u00f8benhavn \u00d8, DK), which accepts orders and bookings. The assistant shows the shop's name and city."
            },
            {
              "description": "Show a shop's menu with prices.",
              "prompt": "Show me the menu of OpenAjan Demo with prices.",
              "tools_triggered": "get_shop",
              "expected_behavior": "get_shop (slug openajan-demo) returns the catalog. The assistant lists the pizzas with prices in DKK incl. VAT, e.g. Margherita (Alm) 75 DKK, Margherita (Fam) 150 DKK, Parma (Alm) 90 DKK. Opening hours are every day 00:00\u201323:59."
            },
            {
              "description": "Place a pickup order only after explicit user approval (two-step quote).",
              "prompt": "Order one Margherita (Alm) from OpenAjan Demo for pickup. My name is Test Reviewer, phone 00000000. When the assistant shows the summary, reply: Yes, place the order.",
              "tools_triggered": "find_shops, get_shop, place_order",
              "expected_behavior": "The first place_order call returns status \"quote\" (no order placed) with 1 \u00d7 Margherita (Alm), total 75 DKK, payment at the shop. The assistant shows this summary and asks for confirmation. Only after the user's yes, place_order is called again with the quote and returns ok=true, an order_id (oa_ord_\u2026), status confirmed and a signed receipt link. The demo shop confirms automatically; nothing is prepared or charged."
            },
            {
              "description": "Check free times and book a table at a free time.",
              "prompt": "Book a table at OpenAjan Demo tomorrow at 18:00 and pre-order 2 \u00d7 Margherita (Alm). My name is Test Reviewer, phone 00000000. When the assistant shows the summary, reply: Yes, book it.",
              "tools_triggered": "get_availability, place_order",
              "expected_behavior": "get_availability for tomorrow lists 18:00 as a free time. The first place_order call (kind booking, wanted_at tomorrow 18:00) returns status \"quote\" with 2 \u00d7 Margherita (Alm), total 150 DKK. After the user's yes, place_order returns ok=true, an order_id, status confirmed, kind booking, wanted_at tomorrow 18:00 and a signed receipt link."
            },
            {
              "description": "Check the status of the user's own orders.",
              "prompt": "What is the status of my OpenAjan orders?",
              "tools_triggered": "order_status",
              "expected_behavior": "order_status (without order_id) returns the signed-in user's latest orders, e.g. the demo orders from the previous test cases, each with order_id, shop OpenAjan Demo, status confirmed (\"Accepted by the shop\"), total and currency. Run after test case 3 or 4 in the same connected account; with no orders it returns order_not_found."
            }
          ],
          "negative": [
            {
              "description": "Medical or health care requests are out of scope; OpenAjan should not be used.",
              "prompt": "Book me a doctor's appointment for my back pain tomorrow."
            },
            {
              "description": "Money transfers are out of scope; OpenAjan never moves money.",
              "prompt": "Send 500 DKK to my friend's bank account."
            },
            {
              "description": "General questions unrelated to ordering or booking at a local shop should not trigger OpenAjan.",
              "prompt": "What is the capital of Australia?"
            }
          ]
        },
        "demo_recording_url": "https://openajan.com/assets/openajan-demo.mov",
        "commerce": true,
        "commerce_description": "Users order food or book appointments at local shops. OpenAjan only relays the order to the shop after the user explicitly approves the quoted items, total and time; payment always happens at the shop. OpenAjan does not process payments or move money."
      },
      "publication": {
        "release_notes": "1.4.0: Health and clinic services removed from scope. No personal data in tool responses (customer phone, spending limits and account flags removed). order_status returns only the user's own orders. Internal errors are no longer exposed. Privacy policy section 9 lists all data returned to the assistant. Test cases use only the sandbox shop OpenAjan Demo."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: d9ce89b6599f3f5b3da93b053e48676126a3c3d85821992c9b304de221f7b009