← Files HopperARCHIVED FILE

plugin.json

7.03 KB · Nov 3, 2026 · 18:58 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "hopper",
  "version": "1.3.0",
  "description": "Realtime inference API for open-source models in your agent: two LLMs, text-to-speech and speech-to-text. Try the latest open-source models on your own prompts, add a key to your code, speak text and transcribe audio.",
  "author": {
    "name": "Hopper",
    "email": "founders@withhopper.com",
    "url": "https://withhopper.com"
  },
  "homepage": "https://withhopper.com",
  "repository": "https://github.com/hopper-inc/plugins",
  "license": "MIT",
  "keywords": [
    "llm",
    "inference",
    "open-source models",
    "api",
    "agents",
    "model comparison",
    "text to speech",
    "speech to text",
    "tts",
    "stt",
    "transcription",
    "open-source llm",
    "latest open-source models",
    "chat completions api"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Hopper",
        "shortDescription": "The latest open-source models",
        "longDescription": "Hopper is a realtime inference API for open-source models: two LLMs, text-to-speech and speech-to-text, behind a standard chat-completions API. Try the latest open-source models on your own work: in a chat, Hopper runs your prompt or examples on both LLMs side by side and returns each answer with time to first token, tokens per second, token counts and cost, so you can judge the models on your task. It also speaks text with an inline audio player, transcribes recordings you attach (WAV, MP3, M4A, Ogg, FLAC or WebM) with word timestamps, lists models and prices, and returns tested client code for popular SDKs and agent frameworks. After you sign in with your Hopper account, it shows your usage and creates API keys: the key opens once in the Hopper console, with a ready snippet for your code. Where it can run commands in your project, the plugin also finds the prompts your app sends and tests them on both models, and after you say go it points your project's chat-completions client at a Hopper model, changing only the client. Text and audio you send go to Hopper's API; see withhopper.com/privacy.",
        "developerName": "Hopper",
        "category": "Developer Tools",
        "capabilities": [
          "Interactive",
          "Read",
          "Write"
        ],
        "websiteURL": "https://withhopper.com",
        "supportURL": "https://withhopper.com/talk-to-us",
        "privacyPolicyURL": "https://withhopper.com/privacy",
        "termsOfServiceURL": "https://withhopper.com/terms",
        "defaultPrompt": [
          "Try the latest open-source LLM on a prompt from my app",
          "Compare Hopper's two LLMs on this prompt",
          "Read this aloud in a natural voice"
        ],
        "brandColor": "#3B82F6",
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/logo.png"
      },
      "onboardingSkill": "./skills/hopper-try/SKILL.md",
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Compare two open models on the user's prompt",
              "prompt": "Compare Gemma 4 and DeepSeek V4.1 Flash on this support prompt: system \"You are a concise support agent for an online furniture store.\", user \"My sofa arrived with a torn cushion. What can I do?\"",
              "tools_triggered": "generate",
              "expected_behavior": "Runs the prompt on deepseek-v4.1-flash and gemma-4-31b with generate and shows both answers side by side, each with time to first token, tokens per second and cost, followed by a one-line verdict. It offers an API key as a next step without creating one."
            },
            {
              "description": "Try a new model on the user's own examples",
              "prompt": "There's a new DeepSeek model. Try it on this: \"Extract the order number and the issue as JSON with keys order_number and issue: Hi, order 58213 never arrived.\"",
              "tools_triggered": "generate",
              "expected_behavior": "Calls generate with the user's text on DeepSeek V4.1 Flash (and Gemma 4 31B for comparison), shows the JSON each returned with its metrics, and says whether each output is valid JSON with the requested keys."
            },
            {
              "description": "API key and code snippet after sign-in",
              "prompt": "I want to call DeepSeek V4.1 Flash from my Python app. Create a Hopper API key named my-app and show me the code.",
              "tools_triggered": "create_api_key",
              "expected_behavior": "Asks the user to connect their Hopper account if needed, then creates the key and replies with the one-time link to copy it in the Hopper console, the HOPPER_API_KEY line and a Python snippet using https://api.withhopper.com/v1 with model deepseek-v4.1-flash. The full key never appears in the chat."
            },
            {
              "description": "Speak text aloud",
              "prompt": "Read this aloud: \"Thanks for calling Bright Smile Dental, how can I help?\"",
              "tools_triggered": "speak",
              "expected_behavior": "Shows Hopper's inline audio player with the voice name and duration; pressing Play plays the sentence. The reply names the voice and does not paste audio data."
            },
            {
              "description": "Transcribe an attached recording",
              "prompt": "(Attach a short voicemail as an .m4a or .mp3 file) Transcribe this voicemail and tell me what the caller wants.",
              "tools_triggered": "transcribe",
              "expected_behavior": "Passes the attached file to transcribe and replies with the transcript and a one-line summary of the request."
            }
          ],
          "negative": [
            {
              "description": "Deleting keys isn't supported; the reply points to the Hopper console",
              "prompt": "Delete all of my Hopper API keys."
            },
            {
              "description": "Local model serving is out of scope",
              "prompt": "Run DeepSeek locally on my laptop with Ollama."
            },
            {
              "description": "Not a general-purpose assistant",
              "prompt": "Book me a flight to Austin next Tuesday."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "This plugin doesn't sell products or process payments.",
        "demo_recording_url": "https://drive.google.com/file/d/1IuERJLuFf8w6YcslVPGs-BrGFDi-Qb3V/view?usp=sharing"
      },
      "publication": {
        "release_notes": "Try the latest open-source models: run your own prompts on Hopper's two LLMs side by side with time to first token, tokens per second and cost (generate tool and the new hopper-try skill, now the onboarding skill). Create an API key with a ready code snippet. hopper-integrate now moves any chat-completions project to a Hopper model. Speech and transcription use the connector. The connector declares its sign-in so signed-in requests use your account. Removed the voice-agent latency review and benchmark skills."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 5536fb78eb4e897188b90d55bd10c61892c81f1f56c854d8180b51ddaa1292cb