{
  "service": "elevenreader",
  "displayName": "ElevenReader",
  "categories": [
    "AI",
    "Design & Media"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "xi-api-key",
      "description": "ElevenLabs API key sent with the xi-api-key header for ElevenReader actions. Create or manage keys from Developers > API Keys."
    }
  ],
  "homepageUrl": "https://elevenlabs.io/text-reader",
  "actions": [
    {
      "id": "elevenreader.get_models",
      "service": "elevenreader",
      "name": "get_models",
      "description": "List available ElevenLabs speech synthesis models for reading text aloud.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required for this action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "modelId": {
                  "type": "string",
                  "description": "The unique model identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The model name."
                },
                "description": {
                  "type": "string",
                  "description": "The model description."
                },
                "languages": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "languageId": {
                        "type": "string",
                        "description": "The language identifier."
                      },
                      "name": {
                        "type": "string",
                        "description": "The language name."
                      }
                    },
                    "additionalProperties": false,
                    "required": [
                      "languageId",
                      "name"
                    ],
                    "description": "A language supported by an ElevenLabs speech model."
                  },
                  "description": "The supported languages."
                },
                "canDoTextToSpeech": {
                  "type": "boolean",
                  "description": "Whether the model supports text-to-speech."
                },
                "canUseStyle": {
                  "type": "boolean",
                  "description": "Whether the model supports style control."
                },
                "canUseSpeakerBoost": {
                  "type": "boolean",
                  "description": "Whether the model supports speaker boost."
                },
                "maximumTextLengthPerRequest": {
                  "type": "integer",
                  "description": "The maximum text length per request."
                },
                "modelRates": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Provider-specific metadata returned by ElevenLabs."
                }
              },
              "additionalProperties": false,
              "required": [
                "modelId"
              ],
              "description": "An ElevenLabs speech model summary."
            },
            "description": "The available speech synthesis models."
          }
        },
        "additionalProperties": false,
        "required": [
          "models"
        ],
        "description": "The ElevenReader speech model list response."
      }
    },
    {
      "id": "elevenreader.get_user_info",
      "service": "elevenreader",
      "name": "get_user_info",
      "description": "Get the current ElevenReader user profile and subscription snapshot.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required for this action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "userId": {
                "type": "string",
                "description": "The unique user identifier."
              },
              "createdAt": {
                "type": "integer",
                "description": "The Unix timestamp when the user was created."
              },
              "firstName": {
                "type": "string",
                "description": "The user's first name."
              },
              "isNewUser": {
                "type": "boolean",
                "description": "Whether the user is new."
              },
              "isOnboardingCompleted": {
                "type": "boolean",
                "description": "Whether onboarding is completed."
              },
              "subscription": {
                "type": "object",
                "properties": {
                  "tier": {
                    "type": "string",
                    "description": "The subscription tier."
                  },
                  "status": {
                    "type": "string",
                    "description": "The subscription status."
                  },
                  "characterCount": {
                    "type": "integer",
                    "description": "The used character count."
                  },
                  "characterLimit": {
                    "type": "integer",
                    "description": "The maximum character count."
                  },
                  "canExtendCharacterLimit": {
                    "type": "boolean",
                    "description": "Whether the character limit can be extended."
                  },
                  "allowedToExtendCharacterLimit": {
                    "type": "boolean",
                    "description": "Whether the user is currently allowed to extend the character limit."
                  },
                  "nextCharacterCountResetUnix": {
                    "type": "integer",
                    "description": "The Unix timestamp of the next character count reset."
                  },
                  "voiceLimit": {
                    "type": "integer",
                    "description": "The custom voice limit."
                  },
                  "canUseInstantVoiceCloning": {
                    "type": "boolean",
                    "description": "Whether instant voice cloning is enabled."
                  },
                  "canUseProfessionalVoiceCloning": {
                    "type": "boolean",
                    "description": "Whether professional voice cloning is enabled."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "tier",
                  "status",
                  "characterCount",
                  "characterLimit",
                  "canExtendCharacterLimit",
                  "allowedToExtendCharacterLimit"
                ],
                "description": "An ElevenReader subscription summary."
              }
            },
            "additionalProperties": false,
            "required": [
              "userId",
              "createdAt",
              "isNewUser",
              "isOnboardingCompleted",
              "subscription"
            ],
            "description": "The current ElevenReader user profile."
          }
        },
        "additionalProperties": false,
        "required": [
          "user"
        ],
        "description": "The current ElevenReader user profile response."
      }
    },
    {
      "id": "elevenreader.get_voice",
      "service": "elevenreader",
      "name": "get_voice",
      "description": "Get one ElevenLabs voice by voice ID before using it to read text aloud.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "voiceId": {
            "type": "string",
            "minLength": 1,
            "description": "The unique voice identifier."
          },
          "withSettings": {
            "type": "boolean",
            "description": "Whether to include voice settings in the response."
          }
        },
        "additionalProperties": false,
        "required": [
          "voiceId"
        ],
        "description": "The voice lookup request."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "voice": {
            "type": "object",
            "properties": {
              "voiceId": {
                "type": "string",
                "description": "The unique voice identifier."
              },
              "name": {
                "type": "string",
                "description": "The voice name."
              },
              "category": {
                "type": "string",
                "description": "The voice category."
              },
              "description": {
                "type": "string",
                "description": "The voice description."
              },
              "previewUrl": {
                "type": "string",
                "description": "The preview audio URL.",
                "format": "uri"
              },
              "labels": {
                "type": "object",
                "additionalProperties": {
                  "type": "string",
                  "description": "One label value."
                },
                "description": "The custom labels on the voice."
              },
              "settings": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Provider-specific metadata returned by ElevenLabs."
              },
              "availableForTiers": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                },
                "description": "The subscription tiers that can access the voice."
              },
              "highQualityBaseModelIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                },
                "description": "The high-quality base models available for this voice."
              },
              "verifiedLanguages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Provider-specific metadata returned by ElevenLabs."
                },
                "description": "The verified languages supported by the voice."
              },
              "sharing": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Provider-specific metadata returned by ElevenLabs."
              },
              "fineTuning": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Provider-specific metadata returned by ElevenLabs."
              },
              "permissionOnResource": {
                "type": "string",
                "description": "The permission level on the voice resource."
              },
              "isOwner": {
                "type": "boolean",
                "description": "Whether the current user owns the voice."
              },
              "isLegacy": {
                "type": "boolean",
                "description": "Whether the voice is a legacy voice."
              }
            },
            "additionalProperties": false,
            "required": [
              "voiceId",
              "name",
              "category"
            ],
            "description": "An ElevenLabs voice summary."
          }
        },
        "additionalProperties": false,
        "required": [
          "voice"
        ],
        "description": "The ElevenReader voice lookup response."
      }
    },
    {
      "id": "elevenreader.read_text",
      "service": "elevenreader",
      "name": "read_text",
      "description": "Convert text to speech with an ElevenLabs voice and store the generated audio in local transit storage.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "voiceId": {
            "type": "string",
            "minLength": 1,
            "description": "The voice ID used to read the text aloud."
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "The text to convert to speech."
          },
          "modelId": {
            "type": "string",
            "description": "The ElevenLabs model ID to use for speech synthesis."
          },
          "outputFormat": {
            "type": "string",
            "description": "The ElevenLabs output format, such as mp3_44100_128."
          },
          "optimizeStreamingLatency": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4,
            "description": "The latency optimization level accepted by ElevenLabs."
          },
          "voiceSettings": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Provider-specific metadata returned by ElevenLabs."
          }
        },
        "additionalProperties": false,
        "required": [
          "voiceId",
          "text"
        ],
        "description": "The text-to-speech request for reading text aloud."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "file": {
            "type": "object",
            "properties": {
              "fileId": {
                "type": "string",
                "description": "The local transit file identifier."
              },
              "downloadUrl": {
                "type": "string",
                "description": "The local transit file download URL.",
                "format": "uri"
              },
              "sizeBytes": {
                "type": "integer",
                "description": "The generated audio size in bytes."
              },
              "name": {
                "type": "string",
                "description": "The generated file name."
              },
              "mimeType": {
                "type": "string",
                "description": "The generated audio MIME type."
              }
            },
            "additionalProperties": false,
            "required": [
              "fileId",
              "downloadUrl",
              "sizeBytes",
              "name",
              "mimeType"
            ],
            "description": "A generated audio file stored in local transit file storage."
          },
          "voiceId": {
            "type": "string",
            "description": "The voice ID used for generation."
          },
          "modelId": {
            "type": "string",
            "description": "The model ID used for generation."
          },
          "outputFormat": {
            "type": "string",
            "description": "The requested output format."
          },
          "contentType": {
            "type": "string",
            "description": "The response content type from ElevenLabs."
          }
        },
        "additionalProperties": false,
        "required": [
          "file",
          "voiceId",
          "outputFormat",
          "contentType"
        ],
        "description": "The ElevenReader generated audio response."
      }
    },
    {
      "id": "elevenreader.search_voices",
      "service": "elevenreader",
      "name": "search_voices",
      "description": "Search available ElevenLabs voices with pagination and filters useful for reading text aloud.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "A search term that filters voices by name, description, labels, or category."
          },
          "category": {
            "type": "string",
            "enum": [
              "premade",
              "cloned",
              "generated",
              "professional"
            ],
            "description": "The voice category to filter by."
          },
          "voiceType": {
            "type": "string",
            "enum": [
              "personal",
              "community",
              "default",
              "workspace",
              "non-default",
              "saved"
            ],
            "description": "The voice type to filter by."
          },
          "sort": {
            "type": "string",
            "enum": [
              "created_at_unix",
              "name"
            ],
            "description": "The field used to sort voices."
          },
          "sortDirection": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The direction used to sort voices."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of voices to return."
          },
          "nextPageToken": {
            "type": "string",
            "description": "The pagination token returned by the previous response."
          },
          "includeTotalCount": {
            "type": "boolean",
            "description": "Whether to include the total count in the response."
          }
        },
        "additionalProperties": false,
        "description": "Filters for searching ElevenLabs voices."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "voices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "voiceId": {
                  "type": "string",
                  "description": "The unique voice identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The voice name."
                },
                "category": {
                  "type": "string",
                  "description": "The voice category."
                },
                "description": {
                  "type": "string",
                  "description": "The voice description."
                },
                "previewUrl": {
                  "type": "string",
                  "description": "The preview audio URL.",
                  "format": "uri"
                },
                "labels": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string",
                    "description": "One label value."
                  },
                  "description": "The custom labels on the voice."
                },
                "settings": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Provider-specific metadata returned by ElevenLabs."
                },
                "availableForTiers": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "The subscription tiers that can access the voice."
                },
                "highQualityBaseModelIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "The high-quality base models available for this voice."
                },
                "verifiedLanguages": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "Provider-specific metadata returned by ElevenLabs."
                  },
                  "description": "The verified languages supported by the voice."
                },
                "sharing": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Provider-specific metadata returned by ElevenLabs."
                },
                "fineTuning": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Provider-specific metadata returned by ElevenLabs."
                },
                "permissionOnResource": {
                  "type": "string",
                  "description": "The permission level on the voice resource."
                },
                "isOwner": {
                  "type": "boolean",
                  "description": "Whether the current user owns the voice."
                },
                "isLegacy": {
                  "type": "boolean",
                  "description": "Whether the voice is a legacy voice."
                }
              },
              "additionalProperties": false,
              "required": [
                "voiceId",
                "name",
                "category"
              ],
              "description": "An ElevenLabs voice summary."
            },
            "description": "The voices returned by the search."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether more voices are available after this page."
          },
          "nextPageToken": {
            "type": "string",
            "description": "The token to pass to the next request for pagination."
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of matching voices when requested."
          }
        },
        "additionalProperties": false,
        "required": [
          "voices",
          "hasMore"
        ],
        "description": "The ElevenReader voice search response."
      }
    }
  ]
}
