{
  "name": "F-3: Custom Tool (Park and Deliver)",
  "description": "Agent invokes a custom tool, loop parks until client delivers result, then agent uses the result. Validates the park-deliver-resume flow.",
  "agent_def": {
    "name": "custom-tool-agent",
    "model": "gemini-2.5-flash",
    "system": "You have access to a deploy tool. Use it when asked to deploy.",
    "tools": [
      {
        "type": "custom",
        "name": "deploy",
        "description": "Deploy the application to production",
        "input_schema": {
          "type": "object",
          "properties": {
            "target": {"type": "string"}
          },
          "required": ["target"]
        }
      }
    ]
  },
  "scripted_model": {
    "turns": [
      {
        "text": null,
        "tool_calls": [
          {
            "name": "deploy",
            "input": {"target": "production"},
            "id": "ctu_deploy_001"
          }
        ]
      },
      {
        "text": "Deployment to production completed successfully!",
        "tool_calls": []
      }
    ]
  },
  "scenario": [
    {
      "type": "user.message",
      "content": [{"type": "text", "text": "Deploy to production"}]
    },
    {
      "type": "user.custom_tool_result",
      "custom_tool_use_id": "ctu_deploy_001",
      "content": [{"type": "text", "text": "Deployed v2.1.0 to production at 2024-01-15T10:30:00Z"}]
    }
  ],
  "assertions": {
    "exact_sequence": ["status.running", "agent.custom_tool_use", "agent.message", "status.idle"],
    "must_contain": ["agent.custom_tool_use", "agent.message"],
    "must_end_with": ["status.idle"]
  }
}
