{"installed_packages":[{"package_name":"Core","package_description":"Built-in integrations that are always available.","endpoints":[{"name":"InvokeLLM","description":"\n    Generates a response from an LLM with a prompt.\n    Be elaborate and detailed in your prompt.\n    You can potentially ask the llm to output a json, in which case specify the json schema in response_json_schema.\n    If you need to use external knowledge, use add_context_from_internet=true. This will give the LLM context from google search, google maps, news, etc. That way you can fetch structured data from the web.\n    You can attach files (including images) for additional context to the LLM, using the `file_urls` parameter. This should be a list of urls after uploading them.\n    You can use both file_urls AND add_context_from_internet together - the system will use a model that supports both vision and web search.\n    You can optionally specify a `model` for this call. Options: 'automatic', 'gpt_5_mini', 'gemini_3_flash', 'gpt_5_4', 'gpt_5_6_sol', 'gpt_5_6_luna', 'gemini_3_1_pro', 'claude_sonnet_4_6', 'claude_opus_4_6', 'claude_opus_4_7', 'claude_opus_4_8', 'claude_opus_5', 'claude-sonnet-5'. Defaults to automatic.\n    All models support file_urls. Only 'gemini_3_flash' and 'gemini_3_1_pro' support add_context_from_internet (web search). Using an incompatible model with add_context_from_internet will raise an error.\n    Non-default models cost more integration credits. Only use them when the task requires higher quality.\n    If response_json_schema is specified, returns a dict (so no need to parse it), otherwise returns a string.\n    IMPORTANT: If specified, response_json_schema root object must by of type object, not array. i.e. {\"type\": \"object\", ...}\n    ","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"prompt":{"title":"Prompt","type":"string"},"add_context_from_internet":{"default":false,"title":"Add Context From Internet","type":"boolean"},"response_json_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Response Json Schema"},"file_urls":{"anyOf":[{"format":"binary","type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"string"},{"type":"null"}],"default":null,"title":"File Urls"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Model"}},"required":["prompt"],"title":"InvokeLLMModel","type":"object"}},{"name":"TranscribeAudio","description":"\n    Transcribes an audio file to text using speech recognition (Whisper).\n    First upload the audio file using the UploadFile integration, then pass the resulting URL here.\n    Returns the transcript as a plain string.\n    Supported formats: ogg, oga, mp3, wav, webm, m4a, mp4, mpeg, mpga, flac. Maximum file size: 25MB.\n    ","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"audio_url":{"title":"Audio Url","type":"string"}},"required":["audio_url"],"title":"TranscribeAudioModel","type":"object"}},{"name":"SendEmail","description":"Sends email. Reaches registered app users always; reaching an address that is not a registered user requires a paid plan and a custom domain connected to the app. Optionally specify the sender name; otherwise the app name is used.","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"from_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"From Name"},"to":{"title":"To","type":"string"},"subject":{"title":"Subject","type":"string"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Body"},"html":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"HTML body — the same thing as 'body' under an explicit name. Set one or the other, never both.","title":"Html"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Plain-text body. On its own, sends a plain-text email. Alongside 'body'/'html', both go out as one multipart/alternative email and the recipient's mail client renders whichever it prefers — so the two must say the same thing. Not accepted with a template: templates are HTML-only.","title":"Text"},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Template Id"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Template Name"},"variables":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Variables"}},"required":["to","subject"],"title":"SendEmailModel","type":"object"}},{"name":"SendPushNotification","description":"Sends a native mobile push notification to one app user's phone.\n\n    Use ONLY when the user explicitly asks for mobile push notifications and the\n    app ships as a native iOS/Android app. This does not reach the web app, and\n    it is not email or an in-app notification — for those use SendEmail or build\n    in-app UI instead. Never reach for it to \"notify a user\" in general.\n\n    The app must have a native mobile build with push credentials configured;\n    without that the call fails at send time, so do not build a feature around it\n    unless the user confirmed they have a native mobile app.\n\n    Server-side only: call it from a backend function via `asServiceRole` (a\n    logged-in end user must not be able to push to other users).\n    ","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"user_id":{"title":"User Id","type":"string"},"title":{"title":"Title","type":"string"},"content":{"title":"Content","type":"string"},"action_label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Action Label"},"action_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Action Url"}},"required":["user_id","title","content"],"title":"SendPushNotificationModel","type":"object"}},{"name":"UploadFile","description":"\n    Uploads a file to the user's files directory.\n    Returns a dict containing {\"file_url\": string}\n    You can use the url later for other inputs\n    ","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"file":{"format":"binary","title":"File","type":"string"}},"required":["file"],"title":"UploadFileModel","type":"object"}},{"name":"GenerateImage","description":"Generate an image using AI.\n    Takes about 5-10 seconds to generate an image.\n    Be detailed in the prompt, the better the prompt, the better the image.\n    Optionally provide existing_image_urls as reference - for editing, style inspiration, or visual context.\n    The integration returns a URL to the generated image: {url: str}","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"prompt":{"title":"Prompt","type":"string"},"existing_image_urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Existing Image Urls"}},"required":["prompt"],"title":"GenerateImageModel","type":"object"}},{"name":"GenerateSpeech","description":"Generate stored, shareable speech audio (TTS) from text. Returns an MP3 URL: {url: str}.\n    Multiple voices, consistent across users, high-quality multilingual (auto-detected if language_code is omitted).\n    For simple in-page playback, prefer the browser's TTS API.\n    Cost: 1 integration credit per 50 characters of text, up to 100 per call.","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"text":{"description":"Text to convert. Max 5000 chars.","title":"Text","type":"string"},"voice":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional voice (default 'river'):\n- river: calm, neutral.\n- honey: warm, soft.\n- sunny: bright, upbeat.\n- storm: formal, authoritative.\n- spark: energetic, quick.","title":"Voice"},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional ISO-639-1 code (e.g. 'en', 'es'). Omit to auto-detect.","title":"Language Code"}},"required":["text"],"title":"GenerateSpeechModel","type":"object"}},{"name":"GenerateVideo","description":"Generate a video using AI.\n\n    Takes about 30-60 seconds to generate a video using Google's Veo 3.x models.\n    Be detailed in the prompt - the better the prompt, the better the video.\n\n    The integration returns a URL to the generated video: {url: str}\n\n    Credit Cost: 5 integration credits per second of video\n    - 4 seconds = 20 credits\n    - 6 seconds (default) = 30 credits\n    - 8 seconds = 40 credits\n    ","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"prompt":{"title":"Prompt","type":"string"},"duration":{"default":6,"enum":[4,6,8],"title":"Duration","type":"integer"},"aspect_ratio":{"default":"16:9","enum":["16:9","9:16"],"title":"Aspect Ratio","type":"string"},"generate_audio":{"default":true,"title":"Generate Audio","type":"boolean"}},"required":["prompt"],"title":"GenerateVideoModel","type":"object"}},{"name":"ExtractDataFromUploadedFile","description":"\n    Extracts data from an uploaded file.\n    Use the UploadFile integration to get the file url first.\n    Supports csv, xlsx, json, html, png, jpg, jpeg, and pdf files.\n    Useful to extract data, and potential flow - upload file, extract data, bulk insert entities into database.\n    Only use this integration when you know the target JSON schema of the data you're trying to extract (if you just want the content of a file - fetch the file url).\n    returns the following object:\n    {\n        \"status\": \"success\" | \"error\",\n        \"details\": \"error details if error, otherwise null\",\n        \"output\": list[dict] | dict | None (exists if status is success)\n    }\n    ","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"file_url":{"title":"File Url","type":"string"},"json_schema":{"additionalProperties":true,"title":"Json Schema","type":"object"}},"required":["file_url","json_schema"],"title":"ExtractDataFromUploadedFileModel","type":"object"}},{"name":"CreateFileSignedUrl","description":"\n    Creates a signed URL for a private file that can be used to download the file.\n    The file must be uploaded to the private storage.\n    Returns a dict containing {\"signed_url\": string}\n    ","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"file_uri":{"title":"File Uri","type":"string"},"expires_in":{"default":300,"title":"Expires In","type":"integer"}},"required":["file_uri"],"title":"CreateFileSignedUrlModel","type":"object"}},{"name":"UploadPrivateFile","description":"\n    Uploads a file to the app's private filhes directory.\n    Returns a dict containing {\"file_uri\": string}\n    You can use the file_uri later to create a signed URL for the file using the CreateFileSignedUrl integration\n    The file is uploaded to the private storage.\n    ","schema":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Id"},"app_owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"App Owner"},"file":{"format":"binary","title":"File","type":"string"}},"required":["file"],"title":"UploadPrivateFileModel","type":"object"}}]}],"missing_packages":[]}