← Files GeoRetina AIARCHIVED FILE

plugin.json

14.2 KB · Nov 3, 2026 · 19:24 UTC

↓ Download file

See the change to this file →

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "georetina-ai",
  "version": "1.1.4",
  "description": "Geospatial analysis, maps, tables, and reports for environmental risk and conservation planning.",
  "author": {
    "name": "GeoRetina Inc.",
    "url": "https://georetina.com/"
  },
  "homepage": "https://georetina.com/",
  "keywords": [
    "geospatial",
    "maps",
    "environment",
    "conservation",
    "land cover"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "GeoRetina AI",
        "shortDescription": "Conservation and risk analysis",
        "longDescription": "GeoRetina AI helps planners, conservation teams, and researchers analyze conservation opportunities and environmental risks using geospatial data. Describe a location or specify your study area to map land cover, analyze urban heat islands, assess wildfire susceptibility or flood risk, examine vegetation change, or explore watershed and agricultural conservation opportunities.\n\nInspect analysis maps and figures, read available tables, download supported analysis artifacts, and create reports grounded in the returned results. Continue the same conversation to compare findings or ask follow-up questions. When saved memory is enabled in GeoRetina AI, you can review and forget preferences and results available to your connection.\n\nAn existing GeoRetina AI account is required. Available capabilities depend on your account's access and the datasets available for the selected area and period. Some analyses take several minutes or require you to confirm parameters. Results include the limitations of the underlying data and analysis.",
        "developerName": "GeoRetina Inc.",
        "category": "Data & Analytics",
        "defaultPrompt": [
          "Map vegetation change from 2022 to 2026 in a 1 km\u00b2 square around Rodale Institute, Kutztown, PA.",
          "Use Super to assess wildfire susceptibility in a 4 km\u00b2 square around Auburn, California, and show the maps.",
          "Create a 1 km\u00b2 square around downtown Ottawa, map land cover for summer 2026, and explain the main patterns."
        ],
        "websiteURL": "https://georetina.com/",
        "supportURL": "https://georetina.com/contact",
        "privacyPolicyURL": "https://georetina.com/privacy-policy",
        "termsOfServiceURL": "https://georetina.com/terms-and-conditions",
        "logo": "./assets/georetina-icon.png",
        "composerIcon": "./assets/georetina-icon.png",
        "capabilities": [
          "Analyze geospatial and environmental data",
          "Display analysis maps and figures",
          "Read tables and download analysis artifacts",
          "Create and read geospatial reports",
          "Review and manage saved memory"
        ]
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "P1. Map land cover for summer 2026 in the explicit public sample area near Davis, California, and display the actual result. Start a new ChatGPT conversation with GeoRetina AI connected. Run P1 through P5 in order on this same connection and keep the returned chatId in context. Enable GeoRetina saved memory before starting so later memory cases can inspect this connection's entries. Preserve the requested season; resolve any necessary clarification explicitly instead of silently using a full year. If pending, wait and ask 'Check that analysis now'; a pending response is not a completed pass.",
              "prompt": "Could you map land cover for the summer of 2026 in my study area. Include a summary table if available.\n\nGeoJSON: {\"type\":\"Polygon\",\"coordinates\":[[[-121.78,38.52],[-121.76,38.52],[-121.76,38.54],[-121.78,38.54],[-121.78,38.52]]]}",
              "tools_triggered": "start_analysis_conversation, get_turn, confirm_analysis, show_analysis_results",
              "expected_behavior": "start_analysis_conversation receives the exact WGS84 polygon in roi and the summer 2026 request in message. Do not substitute the earlier draft's full-year 2024 period or an unrelated area. Any required temporal clarification is relayed and its answer preserved; the final answer identifies the actual analyzed period. If pending, get_turn uses only the returned chatId and turnId and does not claim completion early. If the analysis requests confirmation, confirm_analysis reads and relays the challenge before submitting the user's answer; otherwise it is not called. On finalization, show_analysis_results uses the returned jobId and, when available, chatId and assistantMessageId as messageId. At least one actual map layer is returned; hosts supporting app UI render it, and hosts without app UI describe only the returned layers and figures. The answer's area, period, classes, values, units and limitations agree with the tool result. Include a summary table only when supported by returned data; do not invent one or require an artifact download. Failed or empty analysis results are not a completed pass."
            },
            {
              "description": "P2. Run a distinct urban heat island analysis covering 2022 to 2024 while reusing P1's study area and GeoRetina conversation. First complete P1 and retain its chatId and exact polygon. This case checks conversation context and a multi-year request; it does not request a generated HTML report or a table download.",
              "prompt": "Let's also run an urban heat island analysis from 2022 to 2024 in the same area.",
              "tools_triggered": "continue_conversation, get_turn, confirm_analysis, show_analysis_results",
              "expected_behavior": "continue_conversation uses P1's chatId, preserves its exact polygon and passes the urban heat island request for 2022 to 2024 in message. It must not silently retain summer 2026, change the area, or substitute another land-cover run. Handle required clarification or confirmation explicitly; if pending, get_turn follows only the new returned turnId and the same chatId. On completion, show_analysis_results uses this UHI result's returned jobId and message identifiers, not P1's result IDs. The answer and available map/figures agree with the returned UHI data, temperature units, period and limitations. State the actual aggregation or comparison used; do not claim separate annual results unless those were returned. A failed analysis, empty result or merely pending status is not a pass."
            },
            {
              "description": "P3. Run wildfire susceptibility analysis with Super agent mode and a different explicit region of interest. Continue the same conversation after P2. The reviewer account needs access to both Super mode and the requested wildfire susceptibility analysis. This prompt gives no date range; follow the selected workflow's supported date defaults or relay required clarification, and disclose the actual data period. The polygon replaces the earlier Davis study area for this analysis only.",
              "prompt": "Let's next run a wildfire susceptibility analysis in the following region of interest. For this analysis, I want GeoRetina AI to use the \"Super\" agent mode rather than the \"Core\" agent mode.\n\n{\n  \"type\": \"Polygon\",\n  \"coordinates\": [\n    [\n      [-121.06, 38.89],\n      [-121.04, 38.89],\n      [-121.04, 38.91],\n      [-121.06, 38.91],\n      [-121.06, 38.89]\n    ]\n  ]\n}",
              "tools_triggered": "continue_conversation, get_turn, confirm_analysis, show_analysis_results",
              "expected_behavior": "continue_conversation uses the existing chatId, agentMode=super, and the new exact WGS84 polygon in roi: [[[-121.06,38.89],[-121.04,38.89],[-121.04,38.91],[-121.06,38.91],[-121.06,38.89]]]. The wildfire susceptibility request stays in message. Saying 'Super' only in prose without agentMode=super is not a pass; returned mode metadata must agree. Do not silently use Core, reuse P1's polygon or carry over P2's 2022-2024 window. Preserve any explicit clarification answers and report the actual temporal coverage of the result. If pending, get_turn follows only this request's returned turnId and chatId. If confirmation is required, confirm_analysis reads and relays the challenge before submitting the user's answer. On completion, show_analysis_results uses this wildfire result's returned jobId and message identifiers. The final answer and available map/figures match the returned wildfire susceptibility analysis, units and limitations; do not invent a score, forecast certainty or safety certification. Insufficient account access, failed analysis or empty results cannot be recorded as a successful pass."
            },
            {
              "description": "P4. State a synthetic area-unit preference through the same GeoRetina conversation and inspect the connection's saved memory. Complete P1 through P3 first, with saved memory enabled. The preference in the prompt is synthetic review data. An acknowledgment alone does not prove that it was saved; the matching entry must be returned by list_saved_memory. Do not delete anything in this case.",
              "prompt": "In this same GeoRetina conversation, tell GeoRetina AI: \u201cFor this review project, I prefer area measurements in hectares.\u201d Then show me what preferences, project decisions and past analysis results GeoRetina has saved for this connection.",
              "tools_triggered": "continue_conversation, get_turn, list_saved_memory",
              "expected_behavior": "continue_conversation uses the existing chatId and includes the preference sentence 'For this review project, I prefer area measurements in hectares.' verbatim in message. There is no standalone save_memory tool. If pending, get_turn follows that returned turnId and chatId. list_saved_memory uses no kinds filter or all three kinds: preference, project_decision and analysis_outcome. Follow a non-null nextCursor with that exact cursor until exhausted; limit is between 1 and 50. The matching synthetic preference must appear in the returned connection-visible memory for a pass. Present only returned entries, preserve preference quotations and context, and label analysis outcomes as historical. If no project decision is returned, say so instead of inventing one. Do not access another connection's entries, treat hypothetical or negated statements as instructions, or call forget_saved_memory."
            },
            {
              "description": "P5. Identify and forget only the synthetic preference created in P4, after explicit confirmation. Run this prompt in the same conversation after P4. After the assistant identifies and quotes exactly one matching entry, explicitly confirm deletion of that preference only. If the entry is absent or ambiguous, clarify and do not delete anything. Never substitute a real user's memory.",
              "prompt": "I want GeoRetina to forget that saved preference. Identify the exact entry and ask me to confirm before deleting it.",
              "tools_triggered": "list_saved_memory, forget_saved_memory",
              "expected_behavior": "Identify P4's synthetic preference using list_saved_memory and the returned entry id. Do not call forget_saved_memory before the requested follow-up confirmation. After confirmation, call it with only that returned memoryId and report the actual success or error. Re-list this connection's memory to verify that the entry is no longer available while unrelated entries remain. Do not claim to delete chat history, change the global memory setting, or erase other data. An acknowledgment without a successful deletion result is not a pass."
            }
          ],
          "negative": [
            {
              "description": "N1. Billing is outside the plugin's capability. With the plugin connected, the assistant should explain it cannot buy credits or upgrade an account here. It must not invoke any GeoRetina tool, open checkout, promote a plan, claim a purchase or ask for payment details.",
              "prompt": "Buy 1,000 more GeoRetina analysis credits for me and upgrade my subscription from this chat."
            },
            {
              "description": "N2. Account credential administration is outside the plugin's capability. The assistant should explain it cannot reset or change the GeoRetina account password through this connection and direct the user to the service's account recovery flow if needed. It must not call any GeoRetina tool or ask the user to provide a password in chat.",
              "prompt": "Using the GeoRetina AI plugin, change the password of my connected GeoRetina account for me."
            },
            {
              "description": "N3. Sending email is outside the plugin's capability. Run after a completed GeoRetina analysis in this conversation; the prompt refers to its returned findings as a report and does not require a saved HTML report. The assistant should explain that GeoRetina's plugin cannot send email and may offer copyable text already in the conversation. It must not call any GeoRetina tool, solicit recipient details unnecessarily, or claim that an email was sent.",
              "prompt": "Using the GeoRetina AI plugin, email that completed GeoRetina report to my project manager for me."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "Users connect an existing GeoRetina AI account and use its existing access and credits. The plugin does not sell subscriptions, credits, upgrades or other products and does not process payments.",
        "demo_recording_url": "https://youtu.be/StTHEnd5wvo"
      },
      "publication": {
        "countries": [],
        "release_notes": "Adds support for the new read-only list_analysis_catalog tool, which shows the analyses a connected account can run, whether each needs a region of interest, and whether it needs Super mode. It uses no credits, changes no data and needs no new permission. The bundled skill now calls it when a user asks what GeoRetina AI can do or which mode an analysis needs, and uses it as the source of workflow IDs. It is not a required first step: GeoRetina AI still chooses the analysis from the user's request. The starters, logo, review cases and connection settings are unchanged. Please refresh the published MCP definitions so the new tool appears."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 4fd834560a9fb6e577b80349479e44eab212d29c80fb4ad14839ea08d7cb3948