← Files Proxy Mail QAARCHIVED FILE

plugin.json

15.5 KB · Nov 3, 2026 · 19:14 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "proxymail-qa",
  "version": "1.8.0",
  "description": "Disposable test inboxes for testing sign-up, login-code, magic-link and password-reset emails. Create an address, sign up with it, and get the code or link back without the rest of the email.",
  "author": {
    "name": "Proxy Mail QA",
    "email": "hello@proxymail.qa",
    "url": "https://proxymail.qa"
  },
  "homepage": "https://proxymail.qa/docs/api",
  "repository": "https://github.com/aaquib90/proxymail-qa-plugin",
  "license": "MIT",
  "keywords": [
    "email",
    "testing",
    "qa",
    "otp",
    "magic-link",
    "sign-up",
    "mcp"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Proxy Mail QA",
        "shortDescription": "Test inboxes for app sign-ups",
        "longDescription": "Proxy Mail QA gives ChatGPT and Codex disposable email addresses for testing the emails your app sends. Ask things like:\n\n- \"Give me a test email for my staging sign-up and tell me the code when it arrives.\"\n- \"Why isn't my app's verification email arriving?\"\n- \"Check the password-reset email my app sent to my test address.\"\n- \"Sign up on localhost:3000 with a new test account and confirm the email.\" (Codex, or an agent with a browser)\n\nIt creates an address with a fictional name, username and, if the form needs one, a strong password. You sign up with it, or the agent does when it can use a browser, and you get the verification code or link as soon as it arrives. It works the same for login codes, magic sign-in links, password resets and invites, and it can check the email itself: SPF, DKIM and DMARC, links that point at localhost, the stated expiry and how it fits on a phone. When nothing arrives, it shows what reached the address, anything refused, and the likely cause. It can also fill a whole sign-up form's values (a username with rules, a date of birth, a country), suggest awkward names and passwords to test a form's validation, and look up how something works in Proxy Mail QA's docs.\n\nResults contain only the code or link, the service that sent it and when it expires, never the email's text, so an email can't pass instructions to your agent. Proxy Mail QA never opens links, so single-use links still work. Addresses last up to 30 days and only you can read their mail. Addresses are receive-only: nothing is ever sent from them.\n\nWhen you connect, you sign in to Proxy Mail QA (or create an account and your first project on the way) and choose one project; the agent works only in that project and can't read passwords saved earlier. Disconnect it any time in Project settings \u2192 API keys.",
        "developerName": "Proxy Mail QA",
        "category": "Developer Tools",
        "capabilities": [
          "Read",
          "Write"
        ],
        "websiteURL": "https://proxymail.qa",
        "supportURL": "https://proxymail.qa/support",
        "privacyPolicyURL": "https://proxymail.qa/privacy",
        "termsOfServiceURL": "https://proxymail.qa/terms",
        "defaultPrompt": [
          "Give me a test email for my sign-up form and tell me the code when it arrives.",
          "Why isn't my app's verification email arriving at my test address?",
          "Sign up on localhost:3000 with a new Proxy Mail QA address and confirm the email."
        ],
        "brandColor": "#3C62C7",
        "brandColorDark": "#8AA6F5",
        "composerIcon": "./assets/icon.png",
        "composerIconDark": "./assets/icon-dark.png",
        "logo": "./assets/icon.png",
        "logoDark": "./assets/icon-dark.png"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "List test addresses with their latest codes and links",
              "prompt": "List my Proxy Mail QA test addresses and their latest codes or links.",
              "tools_triggered": "list_addresses",
              "expected_behavior": "Lists the addresses in the Reviewer demo project, newest first. Four were made for a fictional app, Acme Notes, and show a sign-up code, a magic sign-in link, a password-reset link and a team invite. Each shows only the code or link, the sending service and when it arrived, never the email's text."
            },
            {
              "description": "Find test accounts made earlier by tag",
              "prompt": "Find my Proxy Mail QA test accounts tagged staging.",
              "tools_triggered": "list_addresses",
              "expected_behavior": "Lists only the two Reviewer demo addresses tagged staging, the Acme Notes sign-up and password-reset accounts, each with its persona, tags and latest code or link, never the email's text."
            },
            {
              "description": "Create a test address with a password for a sign-up form",
              "prompt": "Create a new Proxy Mail QA test address with a password for a sign-up form, labelled 'ChatGPT review'.",
              "tools_triggered": "create_address",
              "expected_behavior": "Creates a new address on mailclub.dev in the Reviewer demo project, labelled 'ChatGPT review', with a fictional first name, last name and username, a 16-character password, and the date the address expires."
            },
            {
              "description": "Explain why nothing has arrived at a test address",
              "prompt": "Has anything arrived at the test address you just created? If not, find out why.",
              "tools_triggered": "check_delivery",
              "expected_behavior": "Says nothing has arrived yet, without waiting. Within two minutes of creating the address it adds that most mail arrives within seconds; after that it says nothing has reached the address, that the sending app's email provider may only send to verified addresses (sandbox or test mode), and links to proxymail.qa/troubleshooting."
            },
            {
              "description": "List unusual versions of a test address for testing a sign-up form",
              "prompt": "Give me some unusual but valid versions of the test address you just created, to check that my sign-up form accepts them.",
              "tools_triggered": "get_address_variants",
              "expected_behavior": "Lists versions whose mail still arrives in that address's inbox, such as the address in capitals and with plus tags containing an apostrophe, an ampersand or other special characters, plus the longest name allowed (64 characters before the @). It may also mention invalid versions to check the form rejects."
            },
            {
              "description": "Wait for a verification code sent to the new address",
              "prompt": "Wait for the verification code sent to the test address you just created.",
              "tools_triggered": "wait_for_code",
              "expected_behavior": "Before asking, send the new address an email from any mailbox containing the text 'Your code is 482913'. Returns the code 482913 with the sending service and when it arrived, without the rest of the email. It waits up to 30 seconds; if nothing has arrived it says so instead of guessing."
            },
            {
              "description": "Wait for a verification link sent to the new address",
              "prompt": "Wait for the verification link on that test address.",
              "tools_triggered": "wait_for_link",
              "expected_behavior": "Before asking, send the same address a second email containing 'Verify your email: https://example.com/verify?token=abc123'. Returns that link, marked as a verify link, without opening it, so a single-use link stays valid."
            },
            {
              "description": "Save the test account's new password after the app under test changed it",
              "prompt": "I just changed that test account's password in the app I'm testing. Generate a new password and save it on the test address.",
              "tools_triggered": "set_password",
              "expected_behavior": "Generates a 16-character password, saves it on the test address in place of the one saved before, and returns it once. Only Proxy Mail QA's saved copy for that disposable test account changes: it doesn't sign in anywhere or change a password on any other service."
            },
            {
              "description": "Note what a test account was for, then delete it",
              "prompt": "Add the note 'reviewed' and the tag 'review' to that test address, then delete it.",
              "tools_triggered": "update_address, delete_address",
              "expected_behavior": "Saves the note and tag on the address, then deletes the address and its mail. It no longer appears when listing addresses."
            },
            {
              "description": "Count the emails that arrived, to catch a duplicate",
              "prompt": "How many emails have arrived at that test address so far?",
              "tools_triggered": "count_emails",
              "expected_behavior": "Returns how many emails reached the address, each summarised by when it arrived, its sender and the kind of its code or link, never its content."
            },
            {
              "description": "Check that nothing arrives",
              "prompt": "Check that no email arrives at that test address in the next 10 seconds.",
              "tools_triggered": "expect_no_email",
              "expected_behavior": "Watches the address for 10 seconds and reports that nothing arrived (passed: true), or when and from whom an email came, never what it says."
            },
            {
              "description": "Check how a received email was built and sent",
              "prompt": "Check the newest email on the 'Sign-up with email code' test address: does it pass SPF, DKIM and DMARC, and are its links safe?",
              "tools_triggered": "check_email",
              "expected_behavior": "Returns each check (SPF, DKIM, DMARC, links to localhost or plain http, a stated expiry, a plain-text part, size) as pass, fail, warn or skip with a one-line reason, never the email's text or links. If that address has no email yet, it says to wait for one first."
            },
            {
              "description": "Borrow a test account in a known state, then give it back",
              "prompt": "Check out a verified test account for a password-reset test, then give it back.",
              "tools_triggered": "check_out_account, return_account",
              "expected_behavior": "Lends a test address tagged verified that no other test has checked out, with a checkout token, then returns it with that token so another test can have it."
            },
            {
              "description": "Values for every field of a sign-up form",
              "prompt": "My sign-up form has an email field, a username (letters and digits, 3 to 15 characters), a date of birth and a country drop-down with GB, US and DE. Give me a value for each field from a new Proxy Mail QA test account.",
              "tools_triggered": "form_values",
              "expected_behavior": "Creates a new test address in the Reviewer demo project and returns a value for each field: the address, a username that fits the rule, an adult date of birth and one of the listed countries, plus the account's password if the form has a password field. It doesn't submit any form."
            },
            {
              "description": "Awkward names and passwords to test a form's validation",
              "prompt": "Give me some awkward first names and some edge-case passwords (8 to 100 characters) to test my sign-up form's validation.",
              "tools_triggered": "get_name_variants, get_password_variants",
              "expected_behavior": "Lists first names a form should accept (apostrophes, accents, other scripts, very long names), ones it should store as text rather than run (HTML or SQL), and passwords that fit 8 to 100 characters with the edge cases to check, such as spaces, every symbol class and the 72-byte limit, each saying what it tests."
            },
            {
              "description": "Look up how something works in the docs",
              "prompt": "How do I wait for a sign-up code in a Playwright test with Proxy Mail QA?",
              "tools_triggered": "search_docs",
              "expected_behavior": "Returns passages from Proxy Mail QA's docs and guides about waiting for a code in Playwright, each with its page's title and address, and answers from them."
            },
            {
              "description": "Record a session as a run and show its report",
              "prompt": "Start a run called 'ChatGPT review', create a test address in it, then finish the run and show me the report.",
              "tools_triggered": "start_run, create_address, finish_run",
              "expected_behavior": "Starts a run, creates a test address with the run's id so the run records it, then finishes the run and shows its Markdown report (the address made, and that it passed)."
            }
          ],
          "negative": [
            {
              "description": "Sending email isn't supported: Proxy Mail QA addresses are receive-only, so no tool should run and the reply should say so.",
              "prompt": "Send an email from my Proxy Mail QA address to my manager saying the tests passed."
            },
            {
              "description": "Personal inboxes are out of scope: Proxy Mail QA only reads its own test addresses, so no tool should run.",
              "prompt": "Check my Gmail inbox for new messages from my bank."
            },
            {
              "description": "Passwords saved earlier can't be read through this connection (only a new address's password is shown, once, when it's created), so it should explain that and point to the Proxy Mail QA app.",
              "prompt": "Show me the password saved earlier on one of my older Proxy Mail QA test addresses."
            },
            {
              "description": "Real accounts are out of scope: set_password only records the password of a Proxy Mail QA test address, so no tool should run and the reply should say it can't change passwords on other services.",
              "prompt": "Change the password on my personal Gmail account to a new one and save it."
            }
          ]
        },
        "demo_recording_url": "https://zdqzvjogemvfzssmxazt.supabase.co/storage/v1/object/public/Video/Screen%20Recording%202026-10-13%20at%2010.58.08.mov"
      },
      "publication": {
        "release_notes": "Since 1.0.1: checks on the emails a test address receives (check_email: SPF, DKIM, DMARC, links to localhost or plain http, where links go, a stated expiry, size and how it fits a phone; count_emails to catch duplicates; expect_no_email to check an action sends nothing), all verdicts, never the email. Runs (start_run, add_run_note, finish_run) record what each tool saw and end in a Markdown report. An account pool (check_out_account, extend_checkout, return_account) lends a test account in a known state. form_values fills a whole sign-up form's values, get_name_variants and get_password_variants suggest awkward names and passwords to test a form's validation, and search_docs looks things up in the docs. Accounts can record the site and environment they're used on, mark_dev_host lets links to a local dev server pass the checks, and waits can skip codes already used. Ready-made prompts for testing sign-up, password reset and code sign-in, auditing an app's account emails and preparing a test account. Checks on an app's marketing emails (unsubscribe links, codes in them, consent) work for people who switch them on in Labs."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 94cbc60a480f496b8f862b659e861c8f430bb20e240075c4ab83c16328768255