{
  "slug": "password-generator",
  "mcpServerUrl": "https://plugins-worker.demos.42a.ai/password-generator/mcp",
  "interface": {
    "displayName": "Handy Password Generator",
    "shortDescription": "Made on your device",
    "longDescription": "Generate strong passwords, passphrases and PINs right on your own device, with an honest estimate of how long they would take to crack.\n\nChoose a random password (8 to 64 characters, with or without capitals, digits and symbols, and optionally without look-alike characters such as l, 1, O and 0), a passphrase of 3 to 10 random words from the EFF word list, or a PIN. The card makes up to 10 at once using your browser's cryptographic random number generator. The passwords never pass through our server or the chat, and the assistant cannot see them.\n\nEvery result shows its entropy in bits and the average time to crack it in four clearly stated scenarios, from online guessing to a GPU cluster attacking a stolen password database. You can also ask how strong a type of password is (for example \"12 characters, letters and digits\") without ever sharing a real one. Nothing is stored.",
    "category": "Security",
    "defaultPrompt": [
      "Generate a strong 16-character password",
      "Give me a memorable 6-word passphrase",
      "How long would an 8-character lowercase password take to crack?"
    ],
    "capabilities": [
      "Random passwords, word passphrases and PINs, up to 10 at once",
      "Generated in your browser: never sent to the server or the chat",
      "Character sets, length, look-alike exclusion, separators",
      "Exact entropy in bits for the chosen settings",
      "Crack-time estimates with stated attack speeds"
    ],
    "logo": "https://plugins-worker.demos.42a.ai/password-generator/icon.svg",
    "websiteURL": "https://plugins-worker.demos.42a.ai/password-generator/",
    "supportURL": "https://plugins-worker.demos.42a.ai/support",
    "privacyPolicyURL": "https://plugins-worker.demos.42a.ai/privacy",
    "termsOfServiceURL": "https://plugins-worker.demos.42a.ai/terms",
    "developerName": "42a"
  },
  "keywords": [
    "password generator",
    "strong password",
    "random password",
    "passphrase generator",
    "pin generator",
    "how long to crack password",
    "password entropy",
    "secure password ideas"
  ],
  "tools": [
    {
      "name": "generate_password",
      "title": "Generate password",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": false,
        "idempotentHint": true
      }
    },
    {
      "name": "estimate_crack_time",
      "title": "Estimate crack time",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": false,
        "idempotentHint": true
      }
    }
  ],
  "dataSources": [],
  "review": {
    "positiveTestCases": [
      {
        "description": "Strong 16-character password",
        "prompt": "Generate a strong 16-character password",
        "tools_triggered": [
          "generate_password"
        ],
        "expected_behavior": "The card generates 3 passwords from 87 characters: 16 × log2(87) = 103.09 bits. No password appears in the chat."
      },
      {
        "description": "Six-word passphrase",
        "prompt": "Give me a memorable passphrase, 6 words",
        "tools_triggered": [
          "generate_password"
        ],
        "expected_behavior": "6 words from the 1,296-word EFF short list: 6 × log2(1296) = 62.04 bits."
      },
      {
        "description": "PIN",
        "prompt": "I need a random 6 digit PIN",
        "tools_triggered": [
          "generate_password"
        ],
        "expected_behavior": "One 6-digit PIN in the card: 6 × log2(10) = 19.93 bits (weak on its own; fine behind a lockout)."
      },
      {
        "description": "No symbols, no look-alikes",
        "prompt": "20 character password with no symbols and no confusing characters like l and 1, give me 5",
        "tools_triggered": [
          "generate_password"
        ],
        "expected_behavior": "Pool 24 + 24 + 8 = 56 characters: 20 × log2(56) = 116.15 bits."
      },
      {
        "description": "Crack time for a weak policy",
        "prompt": "How long would it take to crack an 8-character password with only lowercase letters?",
        "tools_triggered": [
          "estimate_crack_time"
        ],
        "expected_behavior": "8 × log2(26) = 37.60 bits; 26^8 = 208,827,064,576 combinations, so about 10.4 seconds on average at 10^10 guesses/s."
      }
    ],
    "negativeTestCases": [
      {
        "prompt": "What's my Gmail password?",
        "expected_behavior": "Does not call Handy Password Generator: Retrieving an existing password: impossible and not this plugin; never handle real passwords."
      },
      {
        "prompt": "Is my password Summer2024! strong enough?",
        "expected_behavior": "Does not call Handy Password Generator: Shares a real password; the plugin never accepts one. The model should advise not sharing it and offer a new one instead."
      },
      {
        "prompt": "How do I reset my Netflix password?",
        "expected_behavior": "Does not call Handy Password Generator: Account recovery steps for a service, answered in chat."
      }
    ]
  }
}