{
  "service": "qlty",
  "displayName": "Qlty",
  "categories": [
    "Developer Tools",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "QLTY_API_TOKEN",
      "description": "Qlty API token sent with the Authorization Bearer header. Generate an API token from Qlty user settings: https://qlty.sh/user/settings/tokens."
    }
  ],
  "homepageUrl": "https://qlty.sh",
  "actions": [
    {
      "id": "qlty.get_authenticated_user",
      "service": "qlty",
      "name": "get_authenticated_user",
      "description": "Get the Qlty user associated with the API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for getting the authenticated Qlty user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Qlty user ID."
              },
              "login": {
                "type": "string",
                "description": "The user's login."
              },
              "name": {
                "type": "string",
                "description": "The user's display name."
              },
              "email": {
                "type": "string",
                "description": "The user's email address."
              },
              "avatarUrl": {
                "type": "string",
                "description": "The user's avatar URL."
              },
              "providerUrl": {
                "type": "string",
                "description": "The upstream provider profile URL."
              },
              "createdAt": {
                "type": "string",
                "description": "The user creation timestamp."
              },
              "updatedAt": {
                "type": "string",
                "description": "The user update timestamp."
              }
            },
            "additionalProperties": true,
            "description": "A Qlty authenticated user."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Qlty API response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "user",
          "raw"
        ],
        "description": "The response returned with the authenticated Qlty user."
      }
    },
    {
      "id": "qlty.get_project",
      "service": "qlty",
      "name": "get_project",
      "description": "Get a Qlty project by workspace owner and project key or ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ownerKeyOrId": {
            "type": "string",
            "minLength": 3,
            "description": "Repository owner login or Qlty workspace ID. Must be at least 3 characters."
          },
          "keyOrId": {
            "type": "string",
            "minLength": 3,
            "description": "Repository name or Qlty project ID. Must be at least 3 characters."
          }
        },
        "additionalProperties": false,
        "required": [
          "ownerKeyOrId",
          "keyOrId"
        ],
        "description": "The input payload for getting a Qlty project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Qlty project ID."
              },
              "workspaceId": {
                "type": "string",
                "description": "The Qlty workspace ID that owns the project."
              },
              "providerUrl": {
                "type": "string",
                "description": "The upstream provider repository URL."
              },
              "key": {
                "type": "string",
                "description": "The repository name."
              },
              "workspaceKey": {
                "type": "string",
                "description": "The key of the workspace that owns the project."
              }
            },
            "additionalProperties": true,
            "description": "A Qlty project."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Qlty API response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "project",
          "raw"
        ],
        "description": "The response returned with a Qlty project."
      }
    },
    {
      "id": "qlty.get_project_metrics",
      "service": "qlty",
      "name": "get_project_metrics",
      "description": "Get the latest Qlty metric values for a project's default branch.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ownerKeyOrId": {
            "type": "string",
            "minLength": 3,
            "description": "Repository owner login or Qlty workspace ID. Must be at least 3 characters."
          },
          "projectKeyOrId": {
            "type": "string",
            "minLength": 3,
            "description": "Repository name or Qlty project ID. Must be at least 3 characters."
          }
        },
        "additionalProperties": false,
        "required": [
          "ownerKeyOrId",
          "projectKeyOrId"
        ],
        "description": "The input payload for getting Qlty project metrics."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "metrics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Qlty metric value."
            },
            "description": "The project metrics returned by Qlty."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Qlty API response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "metrics",
          "raw"
        ],
        "description": "The response returned with Qlty project metrics."
      }
    },
    {
      "id": "qlty.get_rate_limit_status",
      "service": "qlty",
      "name": "get_rate_limit_status",
      "description": "Get Qlty API rate-limit status for the API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for getting Qlty API rate-limit status."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "resources": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The Qlty rate-limit resources object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Qlty API response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "resources",
          "raw"
        ],
        "description": "The response returned with Qlty API rate-limit status."
      }
    },
    {
      "id": "qlty.get_workspace",
      "service": "qlty",
      "name": "get_workspace",
      "description": "Get a Qlty workspace by key or ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyOrId": {
            "type": "string",
            "minLength": 3,
            "description": "Qlty workspace key or ID. Must be at least 3 characters."
          }
        },
        "additionalProperties": false,
        "required": [
          "keyOrId"
        ],
        "description": "The input payload for getting a Qlty workspace."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "workspace": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Qlty workspace ID."
              },
              "key": {
                "type": "string",
                "description": "The Qlty workspace key."
              },
              "avatarUrl": {
                "type": "string",
                "description": "The workspace avatar URL."
              },
              "providerUrl": {
                "type": "string",
                "description": "The upstream provider workspace URL."
              },
              "createdAt": {
                "type": "string",
                "description": "The workspace creation timestamp."
              },
              "updatedAt": {
                "type": "string",
                "description": "The workspace update timestamp."
              }
            },
            "additionalProperties": true,
            "description": "A Qlty workspace."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Qlty API response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "workspace",
          "raw"
        ],
        "description": "The response returned with a Qlty workspace."
      }
    },
    {
      "id": "qlty.list_issues",
      "service": "qlty",
      "name": "list_issues",
      "description": "List Qlty issues for a project with optional category, level, status, and tool filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ownerKeyOrId": {
            "type": "string",
            "minLength": 3,
            "description": "Repository owner login or Qlty workspace ID. Must be at least 3 characters."
          },
          "projectKeyOrId": {
            "type": "string",
            "minLength": 3,
            "description": "Repository name or Qlty project ID. Must be at least 3 characters."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of items to return. Qlty accepts 1-100."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of items to skip before returning results."
          },
          "category": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "bug",
                  "vulnerability",
                  "structure",
                  "duplication",
                  "security_hotspot",
                  "performance",
                  "documentation",
                  "type_check",
                  "style",
                  "anti_pattern",
                  "accessibility",
                  "dead_code",
                  "lint",
                  "secret",
                  "dependency_alert"
                ],
                "description": "A Qlty issue category filter."
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "bug",
                    "vulnerability",
                    "structure",
                    "duplication",
                    "security_hotspot",
                    "performance",
                    "documentation",
                    "type_check",
                    "style",
                    "anti_pattern",
                    "accessibility",
                    "dead_code",
                    "lint",
                    "secret",
                    "dependency_alert"
                  ],
                  "description": "A Qlty issue category filter."
                },
                "description": "Multiple values for issue categories to include.",
                "minItems": 1
              }
            ],
            "description": "issue categories to include."
          },
          "level": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "high",
                  "medium",
                  "low",
                  "note",
                  "fmt"
                ],
                "description": "A Qlty issue level filter."
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "high",
                    "medium",
                    "low",
                    "note",
                    "fmt"
                  ],
                  "description": "A Qlty issue level filter."
                },
                "description": "Multiple values for issue levels to include.",
                "minItems": 1
              }
            ],
            "description": "issue levels to include."
          },
          "status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "open",
                  "ignored"
                ],
                "description": "A Qlty issue status filter."
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "open",
                    "ignored"
                  ],
                  "description": "A Qlty issue status filter."
                },
                "description": "Multiple values for issue statuses to include.",
                "minItems": 1
              }
            ],
            "description": "issue statuses to include."
          },
          "tool": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "tool names to include."
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "description": "tool names to include."
                },
                "description": "Multiple values for tool names to include.",
                "minItems": 1
              }
            ],
            "description": "tool names to include."
          }
        },
        "additionalProperties": false,
        "required": [
          "ownerKeyOrId",
          "projectKeyOrId"
        ],
        "description": "The input payload for listing Qlty issues."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "issues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Qlty issue ID."
                },
                "fingerprint": {
                  "type": "string",
                  "description": "The stable fingerprint for the issue."
                },
                "tool": {
                  "type": "string",
                  "description": "The tool that reported the issue."
                },
                "ruleKey": {
                  "type": "string",
                  "description": "The rule key reported by the tool."
                },
                "message": {
                  "type": "string",
                  "description": "The issue message."
                },
                "category": {
                  "type": "string",
                  "description": "The Qlty issue category."
                },
                "level": {
                  "type": "string",
                  "description": "The Qlty issue level."
                },
                "status": {
                  "type": "string",
                  "description": "The Qlty issue status."
                },
                "documentationUrl": {
                  "type": "string",
                  "description": "The documentation URL for the rule when available."
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "path": {
                      "type": "string",
                      "description": "The source file path for the issue."
                    },
                    "startLine": {
                      "type": "integer",
                      "description": "The starting line number for the issue."
                    },
                    "endLine": {
                      "type": "integer",
                      "description": "The ending line number for the issue."
                    }
                  },
                  "additionalProperties": true,
                  "description": "A Qlty issue location."
                }
              },
              "additionalProperties": true,
              "description": "A Qlty issue summary."
            },
            "description": "The issues returned by Qlty."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether Qlty has more issues after this page."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Qlty API response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "issues",
          "hasMore",
          "raw"
        ],
        "description": "The response returned when listing Qlty issues."
      }
    },
    {
      "id": "qlty.list_projects",
      "service": "qlty",
      "name": "list_projects",
      "description": "List Qlty projects associated with a workspace or repository owner.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ownerKeyOrId": {
            "type": "string",
            "minLength": 3,
            "description": "Repository owner login or Qlty workspace ID. Must be at least 3 characters."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of items to return. Qlty accepts 1-100."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of items to skip before returning results."
          }
        },
        "additionalProperties": false,
        "required": [
          "ownerKeyOrId"
        ],
        "description": "The input payload for listing Qlty projects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Qlty project ID."
                },
                "workspaceId": {
                  "type": "string",
                  "description": "The Qlty workspace ID that owns the project."
                },
                "providerUrl": {
                  "type": "string",
                  "description": "The upstream provider repository URL."
                },
                "key": {
                  "type": "string",
                  "description": "The repository name."
                },
                "workspaceKey": {
                  "type": "string",
                  "description": "The key of the workspace that owns the project."
                }
              },
              "additionalProperties": true,
              "description": "A Qlty project."
            },
            "description": "The projects returned by Qlty."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether Qlty has more projects after this page."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Qlty API response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "projects",
          "hasMore",
          "raw"
        ],
        "description": "The response returned when listing Qlty projects."
      }
    },
    {
      "id": "qlty.list_workspaces",
      "service": "qlty",
      "name": "list_workspaces",
      "description": "List Qlty workspaces accessible to the API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of items to return. Qlty accepts 1-100."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of items to skip before returning results."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing Qlty workspaces."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "workspaces": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Qlty workspace ID."
                },
                "key": {
                  "type": "string",
                  "description": "The Qlty workspace key."
                },
                "avatarUrl": {
                  "type": "string",
                  "description": "The workspace avatar URL."
                },
                "providerUrl": {
                  "type": "string",
                  "description": "The upstream provider workspace URL."
                },
                "createdAt": {
                  "type": "string",
                  "description": "The workspace creation timestamp."
                },
                "updatedAt": {
                  "type": "string",
                  "description": "The workspace update timestamp."
                }
              },
              "additionalProperties": true,
              "description": "A Qlty workspace."
            },
            "description": "The workspaces returned by Qlty."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether Qlty has more workspaces after this page."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Qlty API response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "workspaces",
          "hasMore",
          "raw"
        ],
        "description": "The response returned when listing Qlty workspaces."
      }
    }
  ]
}
