{
  "service": "riveter",
  "displayName": "Riveter",
  "categories": [
    "AI",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "RIVETER_API_KEY",
      "description": "Riveter API key used with the Authorization Bearer header. Create or manage API keys from the Riveter API Keys page.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://riveterhq.com",
  "actions": [
    {
      "id": "riveter.get_account",
      "service": "riveter",
      "name": "get_account",
      "description": "Retrieve the Riveter account and API key details for the connected API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for retrieving the Riveter account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "account": {
            "type": "object",
            "properties": {
              "uuid": {
                "type": "string",
                "description": "The unique identifier for the account.",
                "format": "uuid"
              },
              "name": {
                "type": "string",
                "description": "The account name."
              },
              "plan": {
                "type": "string",
                "enum": [
                  "free",
                  "starter",
                  "advanced",
                  "pro",
                  "enterprise"
                ],
                "description": "The current billing plan."
              },
              "credit": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "description": "The current credit count."
                  },
                  "max": {
                    "type": "integer",
                    "description": "The maximum credits available."
                  },
                  "balance": {
                    "type": "integer",
                    "description": "The remaining credit balance."
                  }
                },
                "additionalProperties": false,
                "description": "The Riveter credit balance for the account."
              }
            },
            "additionalProperties": false,
            "description": "The Riveter account associated with the API key."
          },
          "api_key_info": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "The name of the API key."
              },
              "last_used_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the API key was last used.",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created_by": {
                "type": "object",
                "properties": {
                  "uuid": {
                    "type": "string",
                    "description": "The user's unique identifier.",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "description": "The user's full name."
                  },
                  "email": {
                    "type": "string",
                    "description": "The user's email address.",
                    "format": "email"
                  }
                },
                "additionalProperties": false,
                "description": "The Riveter user who created the API key."
              }
            },
            "additionalProperties": false,
            "description": "Details about the Riveter API key used for this request."
          }
        },
        "additionalProperties": false,
        "description": "The Riveter account response."
      }
    },
    {
      "id": "riveter.scrape",
      "service": "riveter",
      "name": "scrape",
      "description": "Scrape a public webpage with Riveter and return extracted text content.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The public webpage URL to scrape.",
            "format": "uri"
          },
          "proxy_country_code": {
            "type": "string",
            "description": "The two-character country code for proxy routing.",
            "pattern": "^[a-z]{2}$"
          },
          "skip_cache": {
            "type": "boolean",
            "description": "Whether to bypass cached scrape results and fetch fresh content."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "The input payload for scraping a webpage with Riveter."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_status": {
            "type": "string",
            "enum": [
              "success",
              "error"
            ],
            "description": "The status of the scrape request."
          },
          "message": {
            "type": "string",
            "description": "The human-readable response message."
          },
          "run_key": {
            "type": "string",
            "description": "The unique identifier for this scrape run."
          },
          "data": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "description": "The URL that was scraped.",
                "format": "uri"
              },
              "text": {
                "type": "string",
                "description": "The extracted text content from the webpage."
              },
              "base_url_for_links": {
                "type": "string",
                "description": "The base URL for resolving relative links.",
                "format": "uri"
              },
              "status_code": {
                "type": "integer",
                "description": "The HTTP status code returned by the webpage server."
              },
              "possibly_blocked": {
                "type": "boolean",
                "description": "Whether Riveter detected that the page may be blocked by anti-scraping measures."
              },
              "credit_used": {
                "type": "number",
                "description": "The number of Riveter credits consumed by the scrape."
              },
              "riveter_app_link": {
                "type": "string",
                "description": "The direct link to view this scrape in the Riveter application.",
                "format": "uri"
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw scrape data object returned by Riveter."
              }
            },
            "additionalProperties": false,
            "required": [
              "url",
              "text",
              "base_url_for_links",
              "credit_used",
              "riveter_app_link",
              "raw"
            ],
            "description": "The extracted webpage payload returned by Riveter."
          }
        },
        "additionalProperties": false,
        "description": "The Riveter scrape response."
      }
    }
  ]
}
