{
  "$schema": "https://developers.openai.com/apps-sdk/schemas/chatgpt-app-submission.v1.json",
  "app_info": {
    "category": "EDUCATION",
    "description": "Fire department grant-readiness helper.",
    "display_name": "FireGrant AI",
    "subtitle": "Prepare fire grant work"
  },
  "negative_test_cases": [
    {
      "description": "Do not trigger the plugin for an unsupported or externally mutating request.",
      "expected_output": "The plugin should not be invoked for this request because it is outside the supported analysis workflow or requires an unavailable external action.",
      "expected_output_url": null,
      "file_attachment_urls": null,
      "tools_triggered": null,
      "user_prompt": "Plan my vacation."
    },
    {
      "description": "Do not trigger the plugin for an unsupported or externally mutating request.",
      "expected_output": "The plugin should not be invoked for this request because it is outside the supported analysis workflow or requires an unavailable external action.",
      "expected_output_url": null,
      "file_attachment_urls": null,
      "tools_triggered": null,
      "user_prompt": "Submit this fire grant application."
    },
    {
      "description": "Do not trigger the plugin for an unsupported or externally mutating request.",
      "expected_output": "The plugin should not be invoked for this request because it is outside the supported analysis workflow or requires an unavailable external action.",
      "expected_output_url": null,
      "file_attachment_urls": null,
      "tools_triggered": null,
      "user_prompt": "Guarantee grant approval."
    }
  ],
  "schema_version": 1,
  "test_cases": [
    {
      "description": "Exercise build_firegrant_checklist for a supported FireGrant AI workflow.",
      "expected_output": "Returns a structured, bounded result for the requested workflow and clearly represents uncertainty or missing information.",
      "expected_output_url": null,
      "file_attachment_urls": null,
      "tools_triggered": "build_firegrant_checklist",
      "user_prompt": "Score this fire grant for readiness."
    },
    {
      "description": "Exercise extract_firegrant_requirements for a supported FireGrant AI workflow.",
      "expected_output": "Returns a structured, bounded result for the requested workflow and clearly represents uncertainty or missing information.",
      "expected_output_url": null,
      "file_attachment_urls": null,
      "tools_triggered": "extract_firegrant_requirements",
      "user_prompt": "Extract fire grant requirements."
    },
    {
      "description": "Exercise score_firegrant_readiness for a supported FireGrant AI workflow.",
      "expected_output": "Returns a structured, bounded result for the requested workflow and clearly represents uncertainty or missing information.",
      "expected_output_url": null,
      "file_attachment_urls": null,
      "tools_triggered": "score_firegrant_readiness",
      "user_prompt": "Build a fire grant preparation checklist."
    },
    {
      "description": "Exercise score_firegrant_readiness for a supported FireGrant AI workflow.",
      "expected_output": "Returns a structured, bounded result for the requested workflow and clearly represents uncertainty or missing information.",
      "expected_output_url": null,
      "file_attachment_urls": null,
      "tools_triggered": "score_firegrant_readiness",
      "user_prompt": "Review this department grant opportunity."
    },
    {
      "description": "Exercise score_firegrant_readiness for a supported FireGrant AI workflow.",
      "expected_output": "Returns a structured, bounded result for the requested workflow and clearly represents uncertainty or missing information.",
      "expected_output_url": null,
      "file_attachment_urls": null,
      "tools_triggered": "score_firegrant_readiness",
      "user_prompt": "Create a checklist from this fire grant text."
    }
  ],
  "tools": {
    "build_firegrant_checklist": {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "justifications": {
        "destructive_justification": "Does not delete, overwrite, revoke access, send irreversible transactions, or perform destructive administration.",
        "open_world_justification": "Does not publish to the public internet or modify third-party systems.",
        "read_only_justification": "Computes or retrieves structured analysis from the provided input without changing external systems."
      }
    },
    "extract_firegrant_requirements": {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "justifications": {
        "destructive_justification": "Does not delete, overwrite, revoke access, send irreversible transactions, or perform destructive administration.",
        "open_world_justification": "Does not publish to the public internet or modify third-party systems.",
        "read_only_justification": "Computes or retrieves structured analysis from the provided input without changing external systems."
      }
    },
    "score_firegrant_readiness": {
      "annotations": {
        "destructiveHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "justifications": {
        "destructive_justification": "Does not delete, overwrite, revoke access, send irreversible transactions, or perform destructive administration.",
        "open_world_justification": "Does not publish to the public internet or modify third-party systems.",
        "read_only_justification": "Computes or retrieves structured analysis from the provided input without changing external systems."
      }
    }
  }
}