← Files PrimitiveARCHIVED FILE

plugin.json

5.62 KB · Nov 11, 2026 · 12:13 UTC

↓ Download file

See the change to this file →

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "app-6a25e1d409008191a30d80366aaad5e5",
  "version": "2.1.0",
  "description": "Email for AI agents: read, search, send, and reply to email in a Primitive inbox, and wait for the reply in the same turn.",
  "author": {
    "name": "Primitive",
    "url": "https://www.primitive.dev"
  },
  "homepage": "https://www.primitive.dev",
  "keywords": [
    "email",
    "inbox",
    "agents",
    "send email",
    "reply"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Primitive",
        "shortDescription": "Email for AI agents",
        "longDescription": "Primitive gives ChatGPT a real email inbox. Create a managed inbox address with no signup form, or connect an existing Primitive account. Check whether the inbox and outbound sending are ready, list and search received email, open a message or its whole conversation, read text attachments, send new email, and reply in thread. When you send and expect an answer, Primitive waits for the reply and returns it in the same turn, and says whether the reply came from the person you wrote to.\n\nPrimitive only accesses email in the connected Primitive account. A new account can send only to the recipients it lists until it is verified further. Sending and replying always need your confirmation. Domain, webhook, and filter management are not part of this app.",
        "developerName": "Primitive",
        "category": "Developer Tools",
        "capabilities": [
          "Read email",
          "Search email",
          "Send email",
          "Reply to email"
        ],
        "websiteURL": "https://www.primitive.dev",
        "supportURL": "https://www.primitive.dev/contact",
        "privacyPolicyURL": "https://www.primitive.dev/privacy",
        "termsOfServiceURL": "https://www.primitive.dev/terms",
        "defaultPrompt": [
          "Is my Primitive inbox ready to receive email?",
          "Show my 10 most recent Primitive emails.",
          "Find emails from support@example.com about billing."
        ],
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/logo.png"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Show the authenticated Primitive account summary.",
              "prompt": "Show my Primitive account status and onboarding state.",
              "tools_triggered": "getAccount",
              "expected_behavior": "Returns the account summary, including plan and onboarding state, without changing account data."
            },
            {
              "description": "Check inbound setup readiness before guiding configuration.",
              "prompt": "Is my Primitive inbox ready to receive agent email?",
              "tools_triggered": "getInboxStatus",
              "expected_behavior": "Returns a readiness summary covering domains, routes, deployed Functions, and recent inbound activity."
            },
            {
              "description": "Search inbound messages with sender and subject filters.",
              "prompt": "Find inbound Primitive emails from support@example.com with billing in the subject.",
              "tools_triggered": "searchEmails",
              "expected_behavior": "Returns matching inbound messages, or a clear empty result if none match."
            },
            {
              "description": "Open the most recent inbound email and read the conversation it belongs to.",
              "prompt": "Open my most recent Primitive email and show me the whole conversation.",
              "tools_triggered": "listEmails, getEmail, getConversation",
              "expected_behavior": "Finds the latest inbound email, shows its sender, subject and text, then returns every message in its thread oldest first."
            },
            {
              "description": "Send a confirmed outbound email from the account's own inbox address.",
              "prompt": "Send an email to teammate@example.com with subject Status update and body: The inbox test passed. I confirm this should be sent.",
              "tools_triggered": "sendEmail",
              "expected_behavior": "Sends the confirmed email from the account's managed inbox address and returns the delivery outcome, or explains which recipients the account can reach if this one is not allowed."
            }
          ],
          "negative": [
            {
              "description": "Do not trigger for unrelated weather requests.",
              "prompt": "What is the weather in San Francisco tomorrow?",
              "expected_behavior": "The app is not invoked because the request is unrelated to Primitive email."
            },
            {
              "description": "Do not use Primitive for non-Primitive inboxes.",
              "prompt": "Search my Gmail inbox for messages from my bank.",
              "expected_behavior": "The app is not invoked because it only accesses email in the user's Primitive account."
            },
            {
              "description": "Do not send email without the required details and confirmation.",
              "prompt": "Send a quick email to my teammate.",
              "expected_behavior": "The assistant asks for the recipient, subject, body, and confirmation before invoking a sending tool."
            }
          ]
        }
      },
      "publication": {
        "release_notes": "Each MCP endpoint now runs only the tools it lists, and the server instructions name only those tools. Adds email search, conversation and attachment reads, sent-email reads, and waiting for a reply in the same turn."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 12c0d62f91e8a979147691595efc7d4b7674d66990bd5eda90903488663885c3