{
  "service": "gtmetrix",
  "displayName": "GTmetrix",
  "categories": [
    "Developer Tools",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "gtmetrix_api_key",
      "description": "GTmetrix API key used with HTTP Basic authentication. View or regenerate it from your GTmetrix API settings: https://gtmetrix.com/api/",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://gtmetrix.com",
  "actions": [
    {
      "id": "gtmetrix.get_account_status",
      "service": "gtmetrix",
      "name": "get_account_status",
      "description": "Get the current GTmetrix account status, credits, and plan capabilities.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input payload for reading GTmetrix account status."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "object",
            "properties": {
              "api_credits": {
                "type": "number",
                "description": "The remaining GTmetrix API credits."
              },
              "api_refill": {
                "type": "integer",
                "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
              },
              "api_refill_amount": {
                "type": "number",
                "description": "The number of API credits restored on the next refill."
              },
              "account_type": {
                "type": "string",
                "description": "The GTmetrix plan type."
              },
              "account_pro_analysis_options_access": {
                "type": "boolean",
                "description": "Whether the account can use PRO analysis options."
              },
              "account_pro_locations_access": {
                "type": "boolean",
                "description": "Whether the account can use PRO locations."
              },
              "account_whitelabel_pdf_access": {
                "type": "boolean",
                "description": "Whether the account can generate white-label PDF reports."
              },
              "account_pro_team_role": {
                "type": "string",
                "description": "The GTmetrix PRO team role returned for the account."
              }
            },
            "additionalProperties": true,
            "description": "The GTmetrix account status returned by the status endpoint."
          }
        },
        "additionalProperties": false,
        "required": [
          "status"
        ],
        "description": "The GTmetrix account status result."
      }
    },
    {
      "id": "gtmetrix.get_browser",
      "service": "gtmetrix",
      "name": "get_browser",
      "description": "Get a single GTmetrix browser by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "browser_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix browser ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "browser_id"
        ],
        "description": "Input payload for a browser."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "browser": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "The GTmetrix resource type."
              },
              "id": {
                "type": "string",
                "description": "The GTmetrix resource identifier."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource attributes."
              },
              "links": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource links."
              }
            },
            "additionalProperties": true,
            "description": "A GTmetrix browser resource."
          }
        },
        "additionalProperties": false,
        "required": [
          "browser"
        ],
        "description": "The GTmetrix browser lookup result."
      }
    },
    {
      "id": "gtmetrix.get_latest_page_report",
      "service": "gtmetrix",
      "name": "get_latest_page_report",
      "description": "Get the latest GTmetrix report associated with a page.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix page slug identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "page_id"
        ],
        "description": "Input payload for the latest page report."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "report": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "The GTmetrix resource type."
              },
              "id": {
                "type": "string",
                "description": "The GTmetrix resource identifier."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource attributes."
              },
              "links": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource links."
              }
            },
            "additionalProperties": true,
            "description": "A GTmetrix report resource."
          }
        },
        "additionalProperties": false,
        "required": [
          "report"
        ],
        "description": "The latest GTmetrix page report result."
      }
    },
    {
      "id": "gtmetrix.get_location",
      "service": "gtmetrix",
      "name": "get_location",
      "description": "Get a single GTmetrix test location by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "location_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix location ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "location_id"
        ],
        "description": "Input payload for a location."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "The GTmetrix resource type."
              },
              "id": {
                "type": "string",
                "description": "The GTmetrix resource identifier."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource attributes."
              },
              "links": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource links."
              }
            },
            "additionalProperties": true,
            "description": "A GTmetrix location resource."
          }
        },
        "additionalProperties": false,
        "required": [
          "location"
        ],
        "description": "The GTmetrix location lookup result."
      }
    },
    {
      "id": "gtmetrix.get_page",
      "service": "gtmetrix",
      "name": "get_page",
      "description": "Get a single GTmetrix page by slug.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix page slug identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "page_id"
        ],
        "description": "Input payload for a GTmetrix page."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "The GTmetrix resource type."
              },
              "id": {
                "type": "string",
                "description": "The GTmetrix resource identifier."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource attributes."
              },
              "links": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource links."
              }
            },
            "additionalProperties": true,
            "description": "A GTmetrix page resource."
          }
        },
        "additionalProperties": false,
        "required": [
          "page"
        ],
        "description": "The GTmetrix page lookup result."
      },
      "followUpActions": [
        "gtmetrix.get_latest_page_report",
        "gtmetrix.list_page_reports"
      ]
    },
    {
      "id": "gtmetrix.get_report",
      "service": "gtmetrix",
      "name": "get_report",
      "description": "Get a single GTmetrix report by slug.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "report_slug": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix report slug identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "report_slug"
        ],
        "description": "Input payload for a report."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "report": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "The GTmetrix resource type."
              },
              "id": {
                "type": "string",
                "description": "The GTmetrix resource identifier."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource attributes."
              },
              "links": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource links."
              }
            },
            "additionalProperties": true,
            "description": "A GTmetrix report resource."
          }
        },
        "additionalProperties": false,
        "required": [
          "report"
        ],
        "description": "The GTmetrix report lookup result."
      }
    },
    {
      "id": "gtmetrix.get_simulated_device",
      "service": "gtmetrix",
      "name": "get_simulated_device",
      "description": "Get a single GTmetrix simulated device by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "simulated_device_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix simulated device ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "simulated_device_id"
        ],
        "description": "Input payload for a simulated device."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "simulated_device": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "The GTmetrix resource type."
              },
              "id": {
                "type": "string",
                "description": "The GTmetrix resource identifier."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource attributes."
              },
              "links": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource links."
              }
            },
            "additionalProperties": true,
            "description": "A GTmetrix simulated device resource."
          }
        },
        "additionalProperties": false,
        "required": [
          "simulated_device"
        ],
        "description": "The GTmetrix simulated device lookup result."
      }
    },
    {
      "id": "gtmetrix.get_test",
      "service": "gtmetrix",
      "name": "get_test",
      "description": "Get the current state of a GTmetrix test and detect when it has completed.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "test_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix test ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "test_id"
        ],
        "description": "Input payload for a GTmetrix test."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "test": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "The GTmetrix resource type."
              },
              "id": {
                "type": "string",
                "description": "The GTmetrix resource identifier."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource attributes."
              },
              "links": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource links."
              }
            },
            "additionalProperties": true,
            "description": "A GTmetrix test resource."
          },
          "is_complete": {
            "type": "boolean",
            "description": "Whether GTmetrix has completed the test."
          },
          "report_url": {
            "type": "string",
            "description": "The GTmetrix report URL returned when the test has completed.",
            "format": "uri"
          },
          "retry_after_seconds": {
            "type": "integer",
            "description": "The GTmetrix retry delay returned while the test is pending."
          }
        },
        "additionalProperties": false,
        "required": [
          "test",
          "is_complete"
        ],
        "description": "The GTmetrix test status result."
      },
      "followUpActions": [
        "gtmetrix.get_report"
      ],
      "asyncLifecycle": {
        "startActionId": "gtmetrix.start_test",
        "statusActionId": "gtmetrix.get_test"
      }
    },
    {
      "id": "gtmetrix.list_browsers",
      "service": "gtmetrix",
      "name": "list_browsers",
      "description": "List GTmetrix browsers that can be used for tests.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input payload for listing GTmetrix browsers."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "browsers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "The GTmetrix resource type."
                },
                "id": {
                  "type": "string",
                  "description": "The GTmetrix resource identifier."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource attributes."
                },
                "links": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource links."
                }
              },
              "additionalProperties": true,
              "description": "A GTmetrix browser resource."
            },
            "description": "The GTmetrix browsers returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "browsers"
        ],
        "description": "The GTmetrix browser list."
      }
    },
    {
      "id": "gtmetrix.list_locations",
      "service": "gtmetrix",
      "name": "list_locations",
      "description": "List GTmetrix test locations available to the connected account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input payload for listing GTmetrix locations."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "locations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "The GTmetrix resource type."
                },
                "id": {
                  "type": "string",
                  "description": "The GTmetrix resource identifier."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource attributes."
                },
                "links": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource links."
                }
              },
              "additionalProperties": true,
              "description": "A GTmetrix location resource."
            },
            "description": "The GTmetrix locations returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "locations"
        ],
        "description": "The GTmetrix location list."
      }
    },
    {
      "id": "gtmetrix.list_page_reports",
      "service": "gtmetrix",
      "name": "list_page_reports",
      "description": "List GTmetrix reports associated with a single page.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix page slug identifier."
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "The number of results to return per page."
          },
          "page_number": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number of results to return."
          },
          "sort": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "report_id",
                "-report_id",
                "gtmetrix_score",
                "-gtmetrix_score",
                "performance_score",
                "-performance_score",
                "structure_score",
                "-structure_score",
                "pagespeed_score",
                "-pagespeed_score",
                "yslow_score",
                "-yslow_score",
                "created",
                "-created",
                "expires",
                "-expires",
                "page_bytes",
                "-page_bytes",
                "html_bytes",
                "-html_bytes",
                "page_requests",
                "-page_requests",
                "connect_duration",
                "-connect_duration",
                "redirect_duration",
                "-redirect_duration",
                "backend_duration",
                "-backend_duration",
                "time_to_first_byte",
                "-time_to_first_byte",
                "first_paint_time",
                "-first_paint_time",
                "first_contentful_paint",
                "-first_contentful_paint",
                "largest_contentful_paint",
                "-largest_contentful_paint",
                "time_to_interactive",
                "-time_to_interactive",
                "total_blocking_time",
                "-total_blocking_time",
                "cumulative_layout_shift",
                "-cumulative_layout_shift",
                "speed_index",
                "-speed_index",
                "rum_speed_index",
                "-rum_speed_index",
                "dom_content_loaded_duration",
                "-dom_content_loaded_duration",
                "dom_content_loaded_time",
                "-dom_content_loaded_time",
                "dom_interactive_time",
                "-dom_interactive_time",
                "onload_time",
                "-onload_time",
                "onload_duration",
                "-onload_duration",
                "fully_loaded_time",
                "-fully_loaded_time",
                "cpu_time",
                "-cpu_time"
              ],
              "description": "A GTmetrix page reports sort value."
            },
            "description": "The GTmetrix page report sort directives to apply.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "page_id"
        ],
        "description": "Input payload for listing reports for a GTmetrix page."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "reports": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "The GTmetrix resource type."
                },
                "id": {
                  "type": "string",
                  "description": "The GTmetrix resource identifier."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource attributes."
                },
                "links": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource links."
                }
              },
              "additionalProperties": true,
              "description": "A GTmetrix report resource."
            },
            "description": "The GTmetrix reports returned by the API."
          },
          "links": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "prev": {
                    "type": "string",
                    "description": "The URL of the previous page, when available.",
                    "format": "uri"
                  },
                  "next": {
                    "type": "string",
                    "description": "The URL of the next page, when available.",
                    "format": "uri"
                  },
                  "self": {
                    "type": "string",
                    "description": "The API URL for this resource.",
                    "format": "uri"
                  }
                },
                "additionalProperties": true,
                "description": "Pagination or resource links returned by GTmetrix."
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "curr_page": {
                    "type": "integer",
                    "description": "The current GTmetrix page number returned by the collection endpoint."
                  },
                  "credits_left": {
                    "type": "number",
                    "description": "The GTmetrix API credits remaining after a test submission."
                  },
                  "credits_used": {
                    "type": "number",
                    "description": "The GTmetrix API credits consumed by a test submission."
                  }
                },
                "additionalProperties": true,
                "description": "Metadata returned by GTmetrix."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "reports"
        ],
        "description": "The GTmetrix reports collection response."
      }
    },
    {
      "id": "gtmetrix.list_pages",
      "service": "gtmetrix",
      "name": "list_pages",
      "description": "List GTmetrix pages associated with the connected account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "The number of results to return per page."
          },
          "page_number": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number of results to return."
          },
          "sort": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "page_id",
                "-page_id",
                "created",
                "-created",
                "latest_report_time",
                "-latest_report_time"
              ],
              "description": "A GTmetrix pages sort value."
            },
            "description": "The GTmetrix page sort directives to apply.",
            "minItems": 1
          },
          "filter_bool": {
            "type": "string",
            "enum": [
              "AND",
              "OR"
            ],
            "description": "The boolean connector used between GTmetrix filters."
          },
          "location_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "The GTmetrix location ID."
            },
            "description": "The GTmetrix location IDs to include in the page list.",
            "minItems": 1
          },
          "browser_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "The GTmetrix browser ID."
            },
            "description": "The GTmetrix browser IDs to include in the page list.",
            "minItems": 1
          },
          "monitored": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "no",
                "any",
                "hourly",
                "daily",
                "weekly",
                "monthly"
              ],
              "description": "A GTmetrix monitored filter value accepted by the pages endpoint."
            },
            "description": "The GTmetrix monitored frequency filters to apply.",
            "minItems": 1
          },
          "urls": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A page URL filter value."
            },
            "description": "The GTmetrix page URLs to filter by.",
            "minItems": 1
          },
          "created_eq": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "created_gt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "created_gte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "created_lt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "created_lte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "latest_report_time_eq": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "latest_report_time_gt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "latest_report_time_gte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "latest_report_time_lt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "latest_report_time_lte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for listing GTmetrix pages."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "pages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "The GTmetrix resource type."
                },
                "id": {
                  "type": "string",
                  "description": "The GTmetrix resource identifier."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource attributes."
                },
                "links": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource links."
                }
              },
              "additionalProperties": true,
              "description": "A GTmetrix page resource."
            },
            "description": "The GTmetrix pages returned by the API."
          },
          "links": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "prev": {
                    "type": "string",
                    "description": "The URL of the previous page, when available.",
                    "format": "uri"
                  },
                  "next": {
                    "type": "string",
                    "description": "The URL of the next page, when available.",
                    "format": "uri"
                  },
                  "self": {
                    "type": "string",
                    "description": "The API URL for this resource.",
                    "format": "uri"
                  }
                },
                "additionalProperties": true,
                "description": "Pagination or resource links returned by GTmetrix."
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "curr_page": {
                    "type": "integer",
                    "description": "The current GTmetrix page number returned by the collection endpoint."
                  },
                  "credits_left": {
                    "type": "number",
                    "description": "The GTmetrix API credits remaining after a test submission."
                  },
                  "credits_used": {
                    "type": "number",
                    "description": "The GTmetrix API credits consumed by a test submission."
                  }
                },
                "additionalProperties": true,
                "description": "Metadata returned by GTmetrix."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "pages"
        ],
        "description": "The GTmetrix pages collection response."
      }
    },
    {
      "id": "gtmetrix.list_simulated_devices",
      "service": "gtmetrix",
      "name": "list_simulated_devices",
      "description": "List GTmetrix simulated devices that can be used for tests.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input payload for listing GTmetrix simulated devices."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "simulated_devices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "The GTmetrix resource type."
                },
                "id": {
                  "type": "string",
                  "description": "The GTmetrix resource identifier."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource attributes."
                },
                "links": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource links."
                }
              },
              "additionalProperties": true,
              "description": "A GTmetrix simulated device resource."
            },
            "description": "The GTmetrix simulated devices returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "simulated_devices"
        ],
        "description": "The GTmetrix simulated device list."
      }
    },
    {
      "id": "gtmetrix.list_tests",
      "service": "gtmetrix",
      "name": "list_tests",
      "description": "List GTmetrix tests for the connected account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "The number of results to return per page."
          },
          "page_number": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number of results to return."
          },
          "sort": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "created",
                "-created",
                "started",
                "-started",
                "finished",
                "-finished"
              ],
              "description": "A GTmetrix tests sort value."
            },
            "description": "The GTmetrix test sort directives to apply.",
            "minItems": 1
          },
          "filter_bool": {
            "type": "string",
            "enum": [
              "AND",
              "OR"
            ],
            "description": "The boolean connector used between GTmetrix filters."
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "api",
                "on-demand",
                "monitored",
                "any"
              ],
              "description": "A GTmetrix test source filter value."
            },
            "description": "The GTmetrix test source filters to apply.",
            "minItems": 1
          },
          "states": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "queued",
                "started",
                "error",
                "completed"
              ],
              "description": "The lifecycle state of the GTmetrix test."
            },
            "description": "The GTmetrix test states to include.",
            "minItems": 1
          },
          "location_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "The GTmetrix location ID."
            },
            "description": "The GTmetrix location IDs to include in the test list.",
            "minItems": 1
          },
          "browser_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "The GTmetrix browser ID."
            },
            "description": "The GTmetrix browser IDs to include in the test list.",
            "minItems": 1
          },
          "created_eq": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "created_gt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "created_gte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "created_lt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "created_lte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "started_eq": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "started_gt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "started_gte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "started_lt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "started_lte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "finished_eq": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "finished_gt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "finished_gte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "finished_lt": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          },
          "finished_lte": {
            "type": "integer",
            "description": "A UNIX timestamp in seconds returned by the GTmetrix API."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for listing GTmetrix tests."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "tests": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "The GTmetrix resource type."
                },
                "id": {
                  "type": "string",
                  "description": "The GTmetrix resource identifier."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource attributes."
                },
                "links": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The GTmetrix resource links."
                }
              },
              "additionalProperties": true,
              "description": "A GTmetrix test resource."
            },
            "description": "The GTmetrix tests returned by the API."
          },
          "links": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "prev": {
                    "type": "string",
                    "description": "The URL of the previous page, when available.",
                    "format": "uri"
                  },
                  "next": {
                    "type": "string",
                    "description": "The URL of the next page, when available.",
                    "format": "uri"
                  },
                  "self": {
                    "type": "string",
                    "description": "The API URL for this resource.",
                    "format": "uri"
                  }
                },
                "additionalProperties": true,
                "description": "Pagination or resource links returned by GTmetrix."
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "curr_page": {
                    "type": "integer",
                    "description": "The current GTmetrix page number returned by the collection endpoint."
                  },
                  "credits_left": {
                    "type": "number",
                    "description": "The GTmetrix API credits remaining after a test submission."
                  },
                  "credits_used": {
                    "type": "number",
                    "description": "The GTmetrix API credits consumed by a test submission."
                  }
                },
                "additionalProperties": true,
                "description": "Metadata returned by GTmetrix."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "tests"
        ],
        "description": "The GTmetrix tests collection response."
      }
    },
    {
      "id": "gtmetrix.start_test",
      "service": "gtmetrix",
      "name": "start_test",
      "description": "Start a new GTmetrix performance test for a URL.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL to test with GTmetrix.",
            "format": "uri"
          },
          "location_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix location ID."
          },
          "browser_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix browser ID."
          },
          "report": {
            "type": "string",
            "enum": [
              "lighthouse",
              "legacy",
              "none",
              "lighthouse,legacy"
            ],
            "description": "The GTmetrix report type to generate."
          },
          "retention": {
            "oneOf": [
              {
                "const": 1,
                "type": "number"
              },
              {
                "const": 6,
                "type": "number"
              },
              {
                "const": 12,
                "type": "number"
              },
              {
                "const": 24,
                "type": "number"
              }
            ],
            "description": "The number of months GTmetrix should retain the report."
          },
          "httpauth_username": {
            "type": "string",
            "minLength": 1,
            "description": "The HTTP access authentication username."
          },
          "httpauth_password": {
            "type": "string",
            "minLength": 1,
            "description": "The HTTP access authentication password."
          },
          "adblock": {
            "type": "boolean",
            "description": "Whether to enable AdBlock during analysis."
          },
          "cookies": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "The cookies GTmetrix should send with the test request.",
            "minItems": 1
          },
          "video": {
            "type": "boolean",
            "description": "Whether GTmetrix should generate a video."
          },
          "stop_onload": {
            "type": "boolean",
            "description": "Whether GTmetrix should stop the test at window.onload."
          },
          "throttle": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix throttle profile or custom throttle string."
          },
          "allow_url": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "The GTmetrix allow-list URL patterns to apply.",
            "minItems": 1
          },
          "block_url": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "The GTmetrix block-list URL patterns to apply.",
            "minItems": 1
          },
          "dns": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "The GTmetrix custom DNS mappings to apply.",
            "minItems": 1
          },
          "simulate_device_id": {
            "type": "string",
            "minLength": 1,
            "description": "The GTmetrix simulated device ID."
          },
          "anonymize_user_agent": {
            "type": "boolean",
            "description": "Whether GTmetrix should strip the trailing GTmetrix user agent tag."
          },
          "user_agent": {
            "type": "string",
            "minLength": 1,
            "description": "The custom user agent string to send."
          },
          "browser_width": {
            "type": "integer",
            "minimum": 1,
            "description": "The browser viewport width in pixels."
          },
          "browser_height": {
            "type": "integer",
            "minimum": 1,
            "description": "The browser viewport height in pixels."
          },
          "browser_dppx": {
            "type": "number",
            "minimum": 1,
            "maximum": 5,
            "description": "The browser device pixel ratio."
          },
          "browser_rotate": {
            "type": "boolean",
            "description": "Whether GTmetrix should swap the browser viewport width and height."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "Input payload for starting a GTmetrix test."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "test": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "The GTmetrix resource type."
              },
              "id": {
                "type": "string",
                "description": "The GTmetrix resource identifier."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource attributes."
              },
              "links": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The GTmetrix resource links."
              }
            },
            "additionalProperties": true,
            "description": "A GTmetrix test resource."
          },
          "meta": {
            "type": "object",
            "properties": {
              "curr_page": {
                "type": "integer",
                "description": "The current GTmetrix page number returned by the collection endpoint."
              },
              "credits_left": {
                "type": "number",
                "description": "The GTmetrix API credits remaining after a test submission."
              },
              "credits_used": {
                "type": "number",
                "description": "The GTmetrix API credits consumed by a test submission."
              }
            },
            "additionalProperties": true,
            "description": "Metadata returned by GTmetrix."
          },
          "links": {
            "type": "object",
            "properties": {
              "prev": {
                "type": "string",
                "description": "The URL of the previous page, when available.",
                "format": "uri"
              },
              "next": {
                "type": "string",
                "description": "The URL of the next page, when available.",
                "format": "uri"
              },
              "self": {
                "type": "string",
                "description": "The API URL for this resource.",
                "format": "uri"
              }
            },
            "additionalProperties": true,
            "description": "Pagination or resource links returned by GTmetrix."
          }
        },
        "additionalProperties": false,
        "required": [
          "test",
          "meta",
          "links"
        ],
        "description": "The GTmetrix test submission result."
      },
      "followUpActions": [
        "gtmetrix.get_test"
      ],
      "asyncLifecycle": {
        "startActionId": "gtmetrix.start_test",
        "statusActionId": "gtmetrix.get_test"
      }
    }
  ]
}
